ScrollView 嵌套 RecyclerView 冲突问题

开发中使用ScrollView 嵌套 RecyclerView 时遇到了滑动冲突和显示不全问题。自己尝试解决了一下。

由于项目需求,需要 ScrollView 高度是 wrap_content,ScrollView 内是一个 LinearLayout ,LinearLayout 里添加了多个 RecyclerView 。SrcollView 有一个最大高度 maxHeight 。

对于可能出现的 滑动冲突和卡顿,我使用了下面的方法解决;

final RecyclerView rvFilterItems = (RecyclerView) mFilterView.findViewById(R.id.rv_filter_items);
GridLayoutManager layoutManager = new GridLayoutManager(mP.mContext, mP.mSpanCount, OrientationHelper.VERTICAL, false){
    @Override
    public boolean canScrollVertically() {
        return false;
    }
};

rvFilterItems.setLayoutManager(layoutManager);
rvFilterItems.setNestedScrollingEnabled(false);
rvFilterItems.setHasFixedSize(true);

发现 ScrollView 内容的高度在 maxHeight 附近时, RecyclerView 的 items 显示不全。内容明显大于或小于 maxHeight 时,貌似没有问题。

为了解决 显示不全的问题,看了几篇博客,初步解决了问题。

加了两行代码:layoutManager.setSmoothScrollbarEnabled(true); layoutManager.setAutoMeasureEnabled(true);

final RecyclerView rvFilterItems = (RecyclerView) mFilterView.findViewById(R.id.rv_filter_items);
GridLayoutManager layoutManager = new GridLayoutManager(mP.mContext, mP.mSpanCount, OrientationHelper.VERTICAL, false){
    @Override
    public boolean canScrollVertically() {
        return false;
    }
};
layoutManager.setSmoothScrollbarEnabled(true);
layoutManager.setAutoMeasureEnabled(true);
rvFilterItems.setLayoutManager(layoutManager);
rvFilterItems.setNestedScrollingEnabled(false);
rvFilterItems.setHasFixedSize(true);

布局文件中 ScrollView 换成了 android.support.v4.widget.NestedScrollView,并加上了android:fillViewport="true"

<android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:fillViewport="true"
    android:scrollbars="none">
    <LinearLayout
        android:id="@+id/ll_sel_area"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/white"
        android:orientation="vertical">
    </LinearLayout>
</android.support.v4.widget.NestedScrollView>

最终基本解决了问题。但是,触摸滑动有时候会失去惯性滑动,即手指离开屏幕,马上就不滑动了,有不流畅的感觉。
参考博客 NestedScrollView多层嵌套滑动冲突解决,让 NestedScrollView 拦截事件,尝试解决滑动问题,没有明显的改善。

参考:

  1. NestedScrollView 的问题记录
  2. 解决ScrollView嵌套RecyclerView的显示及滑动问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值