Android NestedScrollView嵌套LinearLayout嵌套RecyclerView子Item布局顯示不全
- 顯示不全原因
- 解決方法一:
- 解決方法二:
- 解決方法三:
曆史上的今天(2021/3/3):
1971年3月3日,在毛澤東“我們也要搞人造衛星”訓示的鼓舞下,我國成功地發射了一顆科學實驗人造地球衛星。
衛星重221公斤。其運作軌道距地球最近點266公裡,最遠點1826公裡,軌道平面與地球赤道平面的夾龜為69.9度;繞地球一周需時106分鐘。它用20009兆赫和19995兆赫的頻率成功地向地面發回了各項科學實驗資料,衛星上帶有宇宙線、X射線、高磁場和軌道外熱流探測器,使我國首次用衛星擷取了空間實體資料。
顯示不全原因
業務需求
效果圖(1.1)
:
ScrollView的onMeasure 和 LinearLayout的onMeasure沖突,導緻LinearLayout無論是否設定寬度 = match_parent 都将自動計算
參考文檔
解決方法一:
來自于網絡
将RecyclerView使用RelativeLayout包裹,并添加android:descendantFocusability="blocksDescendants"屬性
<RelativeLayout
android:layout_width="match_parent"
android:descendantFocusability="blocksDescendants"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:id="@+id/rel"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
android:descendantFocusability屬性的含義是:
當一個view擷取焦點時,定義ViewGroup和其子控件兩者之間的關系。
它一共有3個屬性值,它們分别是:
- beforeDescendants 會優先子類控件而擷取焦點
- afterDescendants隻有當子類控件不需要擷取焦點的時候才去擷取焦點
- blocksDescendants會覆寫子類控件而直接擷取焦點
解決方法二:
來自于網絡
先在xml布局中将你的ScrollView替換成android.support.v4.widget.NestedScrollView,并在java代碼中設定
解決方法三:
我的方法
将子條目布局由LinearLayout替換為RelativeLayout即可(親測有效)