我有一个RecyclerView
包裹在LinearLayout
中,它按预期完美运行。我可以看到RecyclerView
中的所有数据都已填充。到目前为止一切都很好。
当我将LinearLayout
包裹在ScrollView
中时,RecyclerView
会变为空白。我在RecyclerView
内没有看到任何内容。为什么?如何使这项工作。
该页面是ViewPagerIndicator
中的其中一个标签,因此该标签中的所有内容都必须位于ScrollView
。
感谢您的帮助。
答案 0 :(得分:36)
为ScrollView设置此属性
android:fillViewport="true"
ScrollView将扩展自己以填充内容
答案 1 :(得分:22)
检查实施后,原因如下。如果将RecyclerView
放入ScrollView
,则在测量步骤中,其高度未指定(因为ScrollView
允许任何高度),因此,等于最小高度(根据实施情况) )这显然是零。
您有几种方法可以解决此问题:
RecyclerView
ScrollView.fillViewport
设为true
RecyclerView
保留在ScrollView
之外。我认为,这是迄今为止最好的选择。如果RecyclerView
高度不受限制 - 当它被放入ScrollView
时就是这种情况 - 那么所有适配器的视图都有足够的垂直位置并且一次创建。没有任何视图可以回收,这有点打破了RecyclerView
。答案 2 :(得分:4)
除此之外没有任何帮助:
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) {
}
});
我得到了这个答案there。感谢Piyush Gupta。
答案 3 :(得分:0)
希望这个帮助
将此行添加到recyclerView xml:
android:nestedScrollingEnabled="false"
尝试一下,recyclelerview将在scrollview内以灵活的高度平滑滚动。
答案 4 :(得分:0)
在ScrollView中使用RecyclerView不是一个好习惯。
当RecyclerView包装其内容时,它不再循环使用了。只要RecyclerView位于布局层次结构中,数据集中的每条记录都有一个项目视图保留在内存中。
在此处阅读更多内容 - https://android.jlelse.eu/android-dev-tip-4-91b7757b1f0a