2009-07-24 14 views
69

Ich möchte einen Dialog erstellen, um einen Videotitel und Tags anzuzeigen. Unter dem Text möchte ich die Schaltflächen Ansicht, Bearbeiten und Löschen hinzufügen und diese Elemente gleich groß machen. Weiß jemand, wie man eine .xml-Layout-Datei ändert, um Elemente innerhalb von LinearView gleich groß zu machen?Android: Wie alle Elemente innerhalb LinearLayout gleiche Größe machen?

Die aktuelle Layout-Datei sieht wie folgt 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 es begrüßen, wenn jemand die Lösung durch Modifizierung der eingefügten Datei Inhalt zeigen konnte.

Danke!

Antwort

148

Verwenden Sie android:layout_width="0px" und android:layout_weight="1" auf den drei Button s. Das bedeutet, dass die Tasten nicht mehr als 0 Pixel benötigen, aber die drei sollten den zusätzlichen Abstand zwischen ihnen teilen. Das sollte Ihnen den visuellen Effekt geben, den Sie wünschen.

+4

Wenn Sie _REALLY_ wollten, könnten Sie alternativ eine TableLayout mit Android verwenden: stretchColumns = "0,1,2". –

+0

Ehrfürchtig ... also bedeutet dies, wenn wir die Breite auf 0px setzen, überschreibt Gewicht die Einstellungen? Wieso ist es so? – noob

+0

Das hat einfach perfekt funktioniert. – Proverbio

28

Eine andere Möglichkeit ist android:layout_width="fill_parent" und android:layout_weight="1" das wird auch gut funktionieren !!!

+13

Sie waren wirklich begeistert von dieser Antwort. :-) Liebe die Begeisterung! –

+0

Die Lösung von CommonsWare funktionierte nicht für mich, aber das war es! :) Ich habe "match_parent" benutzt, da ich gehört habe, dass du es lieber "fill_parent" vorziehen solltest, aber beide funktionieren. – codepleb

1

Ich schrieb ein EqualSpaceLayout, das Ihr Problem lösen wird. Dies ähnelt dem LinearLayout, aber die Größe der untergeordneten Ansichten wird nicht verzerrt. Check it out: http://www.dev-smart.com/archives/225

16

Verwenden LinearLayout mit Ihrem gewünschten weightSum und erstellen Elemente mit gleichen 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> 

also die Gewichtssumme aller Elemente ist 5. Hier ist der Screenshot ...

enter image description here

Beachten Sie, dass, Google Material Design Symbole verwendet werden. Ich hoffe, das ist hilfreich.

Verwandte Themen