2016-07-13 16 views
1

Meine Ansicht ist, wie:Layout Höhe Problem mit Gewicht und wrap_content

<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> 

Es 50dp zu TextView und dem Rest der Fläche zu RecyclerView geben wird. Aber wenn Elemente in RecyclerView sind kleiner als, sagen wir 1 oder 2, dann sollte es auf die Höhe seiner Kind-Ansichten verkleinern andere weise Verhalten wie Layout angibt. Kann jemand helfen??

+1

Warum nicht ein RelativeLayout verwenden und das Attribut layout_below verwenden? oder willst du das nicht? –

+0

danke @HusseinElFeky – Charu

Antwort

1

Ich denke, die beste Option wäre, LinearLayout.LayoutParams der Stammansicht dynamisch zu ändern. Wenn die RecyclerView eine geringe Menge an Kinder hat, dann setzen Sie LinearLayout params:

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

sonst, lassen wie es ist.

Es ist sehr einfach zu erkennen, ob RecyclerView verpackt werden soll. LinearLayout Höhe:

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

Wenn diese Höhe niedriger ist als die erwartete maximale Höhe (Bildschirmhöhe oder anderen vordefinierten Wert).

0

Ein einfacher Ansatz wäre RelativeLayout werden:

<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> 
Verwandte Themen