BottomSheetBehavior的ViewPager嵌套RecyclerView滑动失效问题记录

记一个遇到的问题。

背景: 需要实现类似百度地图换乘路线在地图中展示的效果。最终实现如图:

BottomSheetBehavior的ViewPager嵌套RecyclerView滑动失效问题记录

 

BottomSheetBehavior的ViewPager嵌套RecyclerView滑动失效问题记录

这里遇到的问题是下面出来的是一个ViewPager,带了BottomSheetBehavior.  ViewPager的每页中都有一个RecyclerView.然后就会出现RecyclerView上下滑动不了(也不是都滑动不了,正确来说只是第一页的RecyclerView能滑动,不过因为我开发的时候换乘查询出来的数据刚好第一页中的路线是只有一条公交,所以内容本来也没到够滑动的地步,所以开始误以为是都滑动不了)。

解决:简单看了下BottomSheetBehavior的源码,它只支持内部有一个可以上下滑动的控件,多个的话就取第一个。

 

BottomSheetBehavior的ViewPager嵌套RecyclerView滑动失效问题记录

从绑定了BottomSheetBehavior的child中找可以嵌套滑动的控件

BottomSheetBehavior的ViewPager嵌套RecyclerView滑动失效问题记录

取第一次找到的

这个mNestedScrollingChildRef在处理touch事件的时候会用到。所以解决办法就是在ViewPager每次切换页面的时候重新设置下这个mNestedScrollingChildRef就可以了。 可以直接copy代码重新写一个BottomSheet也可以继承原来的,直接把泛型View的子类改为ViewPager, 就是只给ViewPager用的。最后在onLayoutChild方法中

BottomSheetBehavior的ViewPager嵌套RecyclerView滑动失效问题记录

完美!



作者:草貌路飛
链接:https://www.jianshu.com/p/5eb471950a92
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。