天天看點

Android NestedScrollView嵌套LinearLayout嵌套RecyclerView子Item布局顯示不全顯示不全原因解決方法一:解決方法二:解決方法三:

Android NestedScrollView嵌套LinearLayout嵌套RecyclerView子Item布局顯示不全

  • 顯示不全原因
  • 解決方法一:
  • 解決方法二:
  • 解決方法三:

曆史上的今天(2021/3/3):

1971年3月3日,在毛澤東“我們也要搞人造衛星”訓示的鼓舞下,我國成功地發射了一顆科學實驗人造地球衛星。

  衛星重221公斤。其運作軌道距地球最近點266公裡,最遠點1826公裡,軌道平面與地球赤道平面的夾龜為69.9度;繞地球一周需時106分鐘。它用20009兆赫和19995兆赫的頻率成功地向地面發回了各項科學實驗資料,衛星上帶有宇宙線、X射線、高磁場和軌道外熱流探測器,使我國首次用衛星擷取了空間實體資料。

顯示不全原因

業務需求

效果圖(1.1)

:

Android NestedScrollView嵌套LinearLayout嵌套RecyclerView子Item布局顯示不全顯示不全原因解決方法一:解決方法二:解決方法三:

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即可(親測有效)