问题描述
先来看问题的效果。RecyclerView嵌套,然后点击加载更多,添加新的数据,结果数据添加了,但是当前Item的位置没变,但是页面上的内容其实是往上滚动了。
解决方案
网上都说是焦点被抢占的问题,需要设置
android:focusable="false"
android:focusableInTouchMode="false"
这两段代码。
但是我设置了也没有用,后来在发现通过设置
android:descendantFocusability="blocksDescendants"
解决我的问题。
原因
因为RecuclerView的Item中会有一些,ImageButton,Button,CheckBox之类的控件,这些控件也会抢占焦点。
android:descendantFocusability
该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。
属性的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
网友评论