ScrollView 嵌套RecyclerView会使RecyclerView列表显示不全,很多人都把ScrollView替换成NestedScrollView,或者重写RecyclerView。
其实使用ScrollView并且不用重写RecyclerView也是可以实现的,那就是在RecyclerView外面再嵌套一层布局就可以了。像下面这样:
<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- 这上面可以放其他布局 -->
……
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_hot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:overScrollMode="never"/>
</RelativeLayout>
</LinearLayout>
</ScrollView>
然后设置RecyclerView禁止滑动,有两种方法:
第一种:
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false){
@Override
public boolean canScrollVertically() {
return false;//禁止滑动
}
});
第二种:
rv_hot.setNestedScrollingEnabled(false);//取消recyclerview单独的滑动效果
ScrollView 嵌套RecyclerView,每次打开界面都是定位在RecyclerView在屏幕顶端,列表上面的布局都被顶上去了 。
下面的设置可以解决这个问题:
recyclerView.setFocusableInTouchMode(false);//让recyclerView失去焦点,不然会把上面布局顶上去