14

我有一个RecyclerView包裹在 a 中LinearLayout,它可以按预期完美运行。我可以看到RecyclerView填充的所有数据。到目前为止,一切都很好。

当我将LinearLayouta包裹起来时ScrollView,它RecyclerView会变成空白。我没有看到里面的任何东西RecyclerView。为什么?如何使这项工作。

该页面是 a 中的选项卡之一ViewPagerIndicator,因此该选项卡中的所有内容都需要位于 a 中ScrollView

感谢所有的帮助。

4

4 回答 4

36

为 ScrollView 设置此属性,

 android:fillViewport="true"

ScrollView 将自行扩展以填充内容

于 2015-01-27T23:34:45.697 回答
23

检查实施后,原因似乎如下。如果RecyclerView放入 a ScrollView,那么在测量步骤期间,它的高度是未指定的(因为ScrollView允许任何高度),因此,它等于最小高度(根据实现),这显然是零。

您有几个选项可以解决此问题:

  • 设置一定的高度RecyclerView
  • 设置ScrollView.fillViewporttrue
  • 或者保持RecyclerView在外面ScrollView。我认为,这是迄今为止最好的选择。如果RecyclerView高度不受限制(放入时就是这种情况),ScrollView那么所有适配器的视图在垂直方向上都有足够的位置并一次创建。不再有视图回收,这有点违反RecyclerView.
于 2014-09-14T07:44:28.530 回答
6

除了这个,没有什么能帮到我:

mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
    @Override
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
        int action = e.getAction();
        switch (action) {
        case MotionEvent.ACTION_MOVE:
            rv.getParent().requestDisallowInterceptTouchEvent(true);
            break;
    }
    return false;
}

@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {

}

@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

    }
});

我在那里得到了这个答案。感谢Piyush Gupta

于 2016-04-28T17:01:12.723 回答
0

希望这可以帮助 :

将此行添加到您的 recyclerView xml :

android:nestedScrollingEnabled="false"

试一试,recyclerview 将在 scrollview 内以灵活的高度平滑滚动。

于 2016-12-21T17:13:46.900 回答