記錄ScrollView下的RecyclerView的存活之路
技術標籤:AndroidAndroid——玩轉Android基礎知識android
在ScrollView下,ListView和RecyclerView總會遇到很多各種亂七八糟的問題。
以下整理這些問題,以及問題的解決思路方案。
首先,用NestedScrollView替代ScrollView。
原因:TODO:自行百度。
NestedScrollView支援巢狀滑動,既能填item顯示不全的坑,又可以填巢狀滑動卡頓的坑。
用法:
(1)、佈局檔案中將ScrollView替換成"android.support.v4.widget.NestedScrollView".
NestedScrollView中使用這個屬性:
android:fillViewport="true"
原因:TODO:自行百度。
RecyclerView單獨使用RelativeLayout佈局巢狀:
<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:descendantFocusability="blocksDescendants"> <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:overScrollMode="never" android:layout_height="wrap_content" /> </RelativeLayout>
新增屬性 android:descendantFocusability=“blocksDescendants”.
該屬性的含義是:當一個view獲取焦點時,定義ViewGroup和其子控制元件兩者之間的關係。
它一共有3個屬性值,它們分別是:
beforeDescendants:viewGroup會優先子類控制元件而獲取焦點;
afterDescendants:viewGroup只有當子類控制元件不需要獲取焦點的時候才去獲取焦點;
blocksDescendants:viewGroup會覆蓋子類控制元件而直接獲取焦點。
艹!還是不行。放棄了。浪費了一整天。
(但是以前的程式碼也是這麼寫的,而且是完全沒問題的啊……)
艹!還嘗試了巢狀viewpager的,也失敗了。啊啊啊啊啊啊啊!
原因:它的高度被限制了,match_parent/wrap_content都沒用。
(但是以前的程式碼也是這麼寫的,而且是完全沒問題的啊……)
TODO:有時間再繼續攻克,老子不信了!