【发布时间】:2019-05-25 17:33:54
【问题描述】:
当我向下滚动时,RecyclerView 上方的项目不会滚动,除非我从上面的布局开始触摸,并且只有当我到达 RecyclerView 的末尾时它才会向下滚动。
<NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout>
<Some other items.../>
</LinearLayout>
<RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</NestedScrollView>
注意: 我实际上为 RecyclerView 使用了固定大小,通过下面的代码设置它:
float height_recyclerview = (ScreenUtil.getHeight(context) - (height_banner + height_bottom_navigation + height_create_post));
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) height_recyclerview);
rv.setLayoutParams(layoutParams);
为什么如果它与wrap_content 兼容,我要使用固定大小?
- 我将展示可能有数千个项目
图像,如果它实际上不这样做会损害性能
回收因为
RecyclerView在里面NestedScrollView - 我已经实现了一个 EndlessRecyclerViewScrollListener,它有一个 如果它不断从服务器加载更多数据的问题 使用可滚动的 RecyclerView 实现 视图,或者如果它在可滚动视图中,但没有固定的 高度,即使您没有向下滚动。
我已尝试以下方法:
- 在回收站视图中将嵌套滚动设置为 false
- 尝试使用滚动视图而不是嵌套滚动视图
- 其他人建议的与布局和滚动行为相关的一堆其他代码对我不起作用,因为我在更复杂的布局中实现它并且我使用 EndlessRecyclerViewScrollListener 的事实
什么我要修复?
我想让页面像单个页面一样滚动,而不是作为单独的可滚动视图。
请注意,我的回收站视图有一个固定的高度,它占据了整个屏幕的空间,这意味着如果用户向下滚动,上面的线性布局不再可见,它的高度实际上是合适的。
理想的场景是让scrollview先向下滚动,让recyclerview占据整个屏幕,这样recyclerview就可以按照用户的意愿滚动。
然后,如果回收站视图占用了屏幕的所有空间,则上面的线性布局应该不再可见,只有当回收站视图到达顶部/第一项时,如果用户继续向上滚动,则应该只显示.
【问题讨论】:
标签: android android-recyclerview android-nestedscrollview endlessscroll