解决CoordinatorLayout+NestedScrollView+BottomSheetBehavior+RecyclerView 快速滑动冲突

提升BottomSheetBehavior可控性:解决RecyclerView/NestedScrollView滑动导致抽屉关闭问题
本文探讨了在使用CoordinatorLayout的BottomSheetBehavior时,如何避免RecyclerView或NestedScrollView的快速滑动意外关闭抽屉。通过理解源码,作者揭示了解决方案,即在适当条件下阻止非拖动行为,增强抽屉的可控性。

当我们使用CoordinatorLayout中的 BottomSheetBehavior 抽屉式布局时, 快速滑动RecyclerView或者NestedScrollView 时,会触发BottomSheetBehavior 的STATE_COLLAPSED 动作,导致抽屉布局被异常关闭,效果很差。

解决:
查看BottomSheetBehavior 源码发现,使抽屉布局关闭的是如下代码

 @Override
    public void onNestedPreScroll(
            @NonNull CoordinatorLayout coordinatorLayout,
            @NonNull V child,
            @NonNull View target,
            int dx,
            int dy,
            @NonNull int[] consumed,
            int type) {
   
   

     
        if (type == ViewCompat.TYPE_NON_TOUCH) {
   
   
            // Ignore fling here. The ViewDragHelper handles it.
            return;
        }
        View scrollingChild = nestedScrollingChildRef != 
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值