1. 程式人生 > >處理在ViewPager中碎片切換時RecyclerView中巢狀RecyclerView內部recyclerView會自動滑動的問題

處理在ViewPager中碎片切換時RecyclerView中巢狀RecyclerView內部recyclerView會自動滑動的問題

解決方法:假設被巢狀的RecyclerView例項物件為item,程式碼中加上:item.setFocusableInTouchMode(false);//設定不需要焦點

補充:看別人的解決方法還多加了一行程式碼:mTestItemSuperRecyclerView.requestFocus();實驗證明有沒有都一樣。檢視原始碼這行程式碼的意思是讓控制元件獲得焦點,所以這行程式碼是完全不需要的。

問題描述:本來一切都是沒問題的,但是有一天突然發現,只要當跳轉到了一個特定的頁面A時,返回雙層巢狀recyclerView的介面後,介面就會自動滑動,但是隻要不進入介面A(跳轉其他頁面不會有影響),雙層巢狀的頁面就不會出現問題。

後續:雖然上面的辦法解決了我的問題,但為什麼會這樣卻搞不明白。為此我做了一定的探究。我發現,只要進入過頁面A之後,返回雙層巢狀的介面後,其中item會有焦點的變化,變化歷程為:獲得焦點->失去焦點。而不進入頁面A的話,焦點一直沒有變化。仔細看了頁面A的程式碼和佈局之後發現,可能是頁面A使用了滾動控制元件NestedScrollView。但具體原因暫時還未發現,希望以後技術提升之後能找到原因。