2016-07-13 126 views
1

我的看法是這樣的:佈局高度問題

<LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

<RecyclerView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
/> 

<TextView 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     /> 
</LinearLayout> 

它會給50dp到TextView和地區的其餘RecyclerView。 但是,如果RecyclerView中的項目小於1或2,那麼它應縮小到其子視圖的高度,其他方式的行爲與佈局指定的行爲相同。任何人都可以幫忙嗎?

+1

爲什麼不使用的RelativeLayout和使用屬性layout_below?或者你不想要那個? –

+0

感謝@HusseinElFeky – Charu

回答

1

我認爲最好的選擇是動態地改變根視圖的LinearLayout.LayoutParams。當RecyclerView有孩子的低量,然後設置LinearLayout PARAMS到:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT); 
layout.setParams(params); 

否則保留原樣。

檢測RecyclerView是否應該被封裝是非常容易的。獲取LinearLayout高度:

int height = layout.getTop() - layout.getBottom() 

如果此高度低於預期的最大高度(屏幕高度或其他預定義值)。

0

一個簡單的方法是使用的RelativeLayout:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <RecyclerView 
     android:id="@+id/recyclerView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:layout_below="@+id/recyclerView" /> 

</RelativeLayout>