Android: Wie werden alle Elemente in LinearLayout gleich groß?


80

Ich möchte einen Dialog erstellen, um einen Videotitel und Tags anzuzeigen. Unterhalb des Textes möchte ich die Schaltflächen Anzeigen, Bearbeiten und Löschen hinzufügen und diese Elemente auf die gleiche Größe bringen. Weiß jemand, wie man eine XML-Layoutdatei ändert, um Elemente in LinearView gleich groß zu machen?

Die aktuelle Layoutdatei sieht folgendermaßen aus:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:orientation="vertical">

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

          <TextView 
              android:layout_width="wrap_content" 
              android:layout_height="wrap_content" 
              android:id="@+id/txtTitle" android:text="[Title]" >
          </TextView>

          <TextView 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content" 
              android:id="@+id/txtTags"            
              android:text="[Tags]" >
          </TextView>

    </LinearLayout>

    <LinearLayout 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal">

        <Button 
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content" 
           android:id="@+id/btnPlay" 
           android:text="View">
        </Button>

        <Button 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/btnEdit" 
            android:text="Edit">
        </Button>

        <Button 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/btnDelete" 
            android:text="Delete">
        </Button>

    </LinearLayout>

</LinearLayout>

Ich würde mich freuen, wenn jemand die Lösung durch Ändern des eingefügten Dateiinhalts zeigen könnte.

Vielen Dank!

Antworten:


172

Verwenden Sie android:layout_width="0px"und android:layout_weight="1"auf den drei Buttons. Das heißt, die Schaltflächen sollten nicht mehr als 0 Pixel einnehmen, aber die drei sollten zusätzlichen Platz zwischen ihnen aufteilen. Das sollte Ihnen den gewünschten visuellen Effekt geben.


4
Wenn Sie WIRKLICH wollten, können Sie alternativ ein TableLayout mit Android verwenden: stripColumns = "0,1,2".
Jeremy Logan

Genial ... das heißt, wenn wir die Breite auf 0px setzen, überschreibt das Gewicht die Einstellungen? Wieso ist es so?
Noob

Dies funktioniert nicht, wenn sich Ihre Schaltflächen in a befinden GridLayout. In diesem Fall werden sie wirklich 0pxbreit. Vielleicht GridLayoutnicht akzeptieren layout_weight?
Zelphir Kaltstahl

@ Zelphir: GridLayoutdefinitiv nicht verwendet layout_weight. Das wird nur von LinearLayoutund vielleicht einigen Unterklassen von verwendet LinearLayout.
CommonsWare

33

Ein anderer Weg ist zu machen android:layout_width="fill_parent"und android:layout_weight="1"das wird auch gut funktionieren !!!


18
Sie waren sehr aufgeregt über diese Antwort. :-) Liebe die Begeisterung!
Oh Danny Boy

Die Lösung von CommonsWare hat bei mir nicht funktioniert, aber das hat es geschafft! :) Ich habe "match_parent" verwendet, da ich gehört habe, dass Sie es "fill_parent" vorziehen sollten, aber beide funktionieren.
Codepleb

Das übergeordnete LinearLayout dieser Elemente muss außerdem layout_width = "match_parent" haben .
Patapoom

18

Verwenden Sie LinearLayout mit Ihrer gewünschten weightSum und erstellen Sie Elemente mit gleichem layout_weight . Hier ist ein Beispiel ...

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="5">

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_share_white_36dp"/>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_search_white_36dp"/>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_event_note_white_36dp"/>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_brush_white_36dp"/>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_menu_white_36dp"/>
</LinearLayout>

Die Gewichtssumme aller Elemente beträgt also 5. Hier ist der Screenshot ...

Geben Sie hier die Bildbeschreibung ein

Beachten Sie, dass Google Material Design- Symbole verwendet werden. Hoffe das ist hilfreich.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.