天天看點

關于NestedScrollView嵌套RecyclerView頁面載入時總是滑動到最底部

看标題是不是不太明白,來兩張圖檔:

關于NestedScrollView嵌套RecyclerView頁面載入時總是滑動到最底部
關于NestedScrollView嵌套RecyclerView頁面載入時總是滑動到最底部

正常情況下,我們期待的是進入頁面以後顯示左圖效果,可是由于NestedScrollView嵌套RecyclerView,導緻Recyclerview占據焦點導緻整個NestedScrollView内容上滑。知道原因以後解決這個bug就容易多了。

方法一:在根布局設定android:descendantFocusability=”blocksDescendants” ;

android:descendantFocusability 有三種值:

beforeDescendants:viewgroup會優先其子類控件而擷取到焦點
afterDescendants:viewgroup隻有當其子類控件不需要擷取焦點時才擷取焦點
blocksDescendants:viewgroup會覆寫子類控件而直接獲得焦點
           

這種方法,會造成頁面中Editext焦點被搶導緻無法輸入,需要用到第二種方法。

方法二:對于有Editext的頁面需要在根布局使用 :

android:focusable="true"
android:focusableInTouchMode="true"
           

方法三:在NestedScrollView頂部第一個控件使用 :

android:focusable="true"
android:focusableInTouchMode="true" 
           

這種方法我覺得有點不太可靠,因為有時候是可行的,有時候是不行的。。。。