問題描述
先來看問題的效果。RecyclerView嵌套,然后點擊加載更多,添加新的數(shù)據(jù),結(jié)果數(shù)據(jù)添加了,但是當(dāng)前Item的位置沒變,但是頁面上的內(nèi)容其實是往上滾動了。

解決方案
網(wǎng)上都說是焦點被搶占的問題,需要設(shè)置
android:focusable="false"
android:focusableInTouchMode="false"
這兩段代碼。
但是我設(shè)置了也沒有用,后來在發(fā)現(xiàn)通過設(shè)置
android:descendantFocusability="blocksDescendants"解決我的問題。
原因
因為RecuclerView的Item中會有一些,ImageButton,Button,CheckBox之類的控件,這些控件也會搶占焦點。
android:descendantFocusability
該屬性是當(dāng)一個為view獲取焦點時,定義viewGroup和其子控件兩者之間的關(guān)系。
屬性的值有三種:
beforeDescendants:viewgroup會優(yōu)先其子類控件而獲取到焦點
afterDescendants:viewgroup只有當(dāng)其子類控件不需要獲取焦點時才獲取焦點
blocksDescendants:viewgroup會覆蓋子類控件而直接獲得焦點