最近项目中有用到ViewPager + Fragment + RecyclerView的布局,发现切换ViewPager时,有一个RecyclerView(里面又嵌套了一个RecyclerView)会自动滚动,原因是因为RecyclerView抢占了事件的焦点导致。
解决办法:
在RecyclerView的外层嵌套一个RelativeLayout或一个LinearLayout,并加上
android:descendantFocusability="blocksDescendants"
descendantFocusability有几个属性如下:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
我们需要的是让父类直接覆盖子类直接获取到焦点,这样RecyclerView就不会自动滑动了。