2016-07-19 6 views
2

Ich versuche, ein RecyclerView-Element Layout erstellen, wo eine Kind-Viewgroup sollte die Höhe des Elements sein in so zum Beispiel habe ich ein 250dp Höhe Element und ich habe ein LinearLayout, dessen Höhe ist auf match_parent eingestellt sollte seine Höhe auch 250dp sein.Make Child ViewGroup Match Elternhöhe RecyclerView

Dies scheint nicht der Fall zu sein, wenn ich versuche, dies zu tun, scheint die Linearlayout Höhe

dies wrap_content gezwungen zu werden, ist mein Beispiel Layout ich mit

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="250dp" 
      android:layout_toLeftOf="@+id/ll" 
      android:background="@color/android_green"> 

     </RelativeLayout> 

     <LinearLayout 
      android:layout_width="175dp" 
      android:layout_height="match_parent" 
      android:orientation="horizontal" 
      android:id="@+id/ll" 
      android:layout_alignParentRight="true" 
      android:background="@color/android_red"> 

     </LinearLayout> 
    </RelativeLayout> 
</RelativeLayout> 

zu testen, bin mit Ich sehe nur das LinearLayout, wenn ich eine harte Höhe (250dp) festlege, wenn ich es in match_parent ändere, verschwindet es.

Ist das mit RecyclerView nicht mehr möglich?

+0

können Sie Erforsche ein wenig mehr, mit welchem ​​Problem du konfrontiert wirst? –

+0

@subrahmanyamboyapati das lineare Layout ist mot die Höhe der Zelle entspricht es immer nur die Höhe des Inhalts – tyczj

+0

'RelativeLayout' ist ein Schmerz manchmal, vor allem beim Verschachteln. Versuchen Sie, die 'layout_alignParentTop'- und' layout_alignParentBottom'-Attribute von 'LinearLayout' auf 'true' zu ​​setzen. –

Antwort

0

Sie sagen, Sie erwarten, dass es 250dp ist, oder? Das heißt, Ihr LinearLayout befindet sich in der sekundären (2. Ordnung) RelativeLayout. Wenn Sie einen match_parent setzen, wird die Höhe von dort kopiert, anstelle von RelativeLayout der 3. Ordnung, für die Sie 250dp HardCoded haben.

schlage ich es so zu halten und es in Ihre Java-Skalierung, damit Ihre App auf allen Geräten arbeiten können ... hartzucodieren Zahlen nicht wirklich das Beste, was ist ... aber zu tun, wenn Sie DO müssen es Seien Sie genau 250dp, machen Sie das LinearLayout zu einem Kind des RelativeLayout der 3. Ordnung.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

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

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="250dp" 
      android:layout_toLeftOf="@+id/ll" 
      android:background="@color/android_green"> 

      <LinearLayout 
       android:layout_width="175dp" 
       android:layout_height="match_parent" 
       android:orientation="horizontal" 
       android:id="@+id/ll" 
       android:layout_alignParentRight="true" 
       android:background="@color/android_red"> 
      </LinearLayout> 

     </RelativeLayout> 
    </RelativeLayout> 
</RelativeLayout> 

UPDATE

ich mit Mike M. Kommentar über das Entfernen der 2. Ordnung RelativeLayout vollständig zustimmen. Es dient keinem offenkundigen Zweck (zumindest nicht im mitgelieferten Code) und verkompliziert unnötig Ihr Programm. Wenn Sie es brauchen, versuchen Sie vielleicht nach alternativen Layouts zu suchen, die nicht so unordentlich sind.

0

Können Sie das Problem erklären, vor dem Sie stehen? Wenn Sie das unten angegebene Problem haben, dann ändern Sie es wie folgt.

Bitte ändern Sie Ihr übergeordnetes Layout (LinearLayouts Eltern) dh Relative Layouthöhe auf 250dp, jetzt ist es match_parent, so dass Sie beide Layoutgröße gleich 250dp bekommen. hier unter den geänderten Code zu setzen, Ihre Absicht, wie es ist, es dann zu

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content"> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="250dp"> 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_toLeftOf="@+id/ll" 
     android:background="@color/color_dark_yellow"> 

    </RelativeLayout> 

    <LinearLayout 
     android:layout_width="175dp" 
     android:layout_height="fill_parent" 
     android:orientation="horizontal" 
     android:id="@+id/ll" 
     android:layout_alignParentRight="true" 
     android:background="@color/color_green_txt"> 

    </LinearLayout> 
</RelativeLayout> 
ändern

0

verwenden können unter Ansatz zur untergeordneten Ansicht Gruppenspiel Mutterhöhe zu machen:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <RelativeLayout 

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

     <RelativeLayout 
      android:id="@+id/rl_child" 
      android:layout_width="match_parent" 
      android:layout_height="250dp" 
      android:layout_toLeftOf="@+id/ll" 
      android:background="#00FF00"> 

     </RelativeLayout> 

     <RelativeLayout 
      android:id="@+id/ll" 
      android:layout_width="175dp" 
      android:layout_height="match_parent" 
      android:layout_alignBottom="@+id/rl_child" 
      android:layout_alignParentRight="true" 
      android:background="#FF0000" 
      android:orientation="horizontal"> 

     </RelativeLayout> 
    </RelativeLayout> 
</RelativeLayout> 
Verwandte Themen