1. 程式人生 > 其它 >記錄ScrollView下的RecyclerView的存活之路

記錄ScrollView下的RecyclerView的存活之路

技術標籤:AndroidAndroid——玩轉Android基礎知識android

在ScrollView下,ListView和RecyclerView總會遇到很多各種亂七八糟的問題。
以下整理這些問題,以及問題的解決思路方案。


首先,用NestedScrollView替代ScrollView。
原因:TODO:自行百度。
NestedScrollView支援巢狀滑動,既能填item顯示不全的坑,又可以填巢狀滑動卡頓的坑。
用法:
(1)、佈局檔案中將ScrollView替換成"android.support.v4.widget.NestedScrollView".

(2)、使用程式碼設定recyclerView.setNestedScrollingEnabled(false)即可


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會覆蓋子類控制元件而直接獲取焦點。


艹!還是不行。放棄了。浪費了一整天。
(但是以前的程式碼也是這麼寫的,而且是完全沒問題的啊……)

TODO:有時間再繼續攻克,老子不信了!


艹!還嘗試了巢狀viewpager的,也失敗了。啊啊啊啊啊啊啊!
原因:它的高度被限制了,match_parent/wrap_content都沒用。
(但是以前的程式碼也是這麼寫的,而且是完全沒問題的啊……)
TODO:有時間再繼續攻克,老子不信了!