Android ScrollView 嵌套RecyclerView 卡頓現象

1.情形一:有時候開發時會遇到ScrollView裏嵌套列表,很天然的就會用到RecyclerView ,而recyclerView.setNestedScrollingEnabled(false);能夠解決滑動衝突,開始ScrollView 嵌套RecyclerView 分頁上拉剛開始時很順,沒有問題,當上拉數據愈來愈多的時候就開始卡,最後頁面直接就卡死了,不斷的排除各類緣由,圖片過大,glide封裝優化,內存泄漏,自定義控件問題,多開闢子線程,註釋代碼都仍是會卡,後面開始定位是否是RecyclerView的複用回收問題。android

解決方法:git

若是是 TabLayout+ViewPager+Fragment :fragment的根目錄不用NestScrollView 直接用LinearLayout 嵌套github

RecyclerView 代碼中記得去了recyclerView.setNestedScrollingEnabled(false); 否則會有滑動問題ide

2.情形二:在寫一個ScrollView 嵌套Viewpager和RecyclerView的佈局時,RecyclerView總是自動得到焦點而後在ScrollView佈局

內部上下自動滾動,嘗試了在ScrollView的直接子LinearLayout使用優化

android:focusable=「true」 android:focusableInTouchMode=「true」線程

但在一些狀況下 ScrollView仍是會自動得到焦點而後滾動起來,最後的方案code

解決方案:圖片

在ScrollView下面的LinearLayout加上android:descendantFocusability="blocksDescendants"屬性, 截獲 ListView的焦 點, 從而達到禁止ScrollView自動滾動.順便解釋下這個屬性的其餘用法:內存

該屬性是當一個爲view獲取焦點時,定義viewGroup和子控件二者之間的關係。屬性的值有三種:beforeDescendants:viewgroup會優先其子類控件而獲取到焦點

afterDescendants:viewgroup只有當其子類控件不須要獲取焦點時才獲取焦點

blocksDescendants:viewgroup會覆蓋子類控件而直接得到焦點

3.若是是RecyclerView 上面還有幾個佈局推薦使用這個大神的用法

https://github.com/385841539/RecycleviewStaggered.git
相關文章
相關標籤/搜索