2009-07-24 16 views
69

Me gustaría crear un cuadro de diálogo para mostrar un título de video y etiquetas. Debajo del texto me gustaría agregar botones Ver, Editar y Eliminar y hacer que estos elementos tengan el mismo tamaño. ¿Alguien sabe cómo modificar el archivo de diseño .xml para hacer que los elementos dentro de LinearView tengan el mismo tamaño?Android: ¿Cómo hacer que todos los elementos dentro de LinearLayout tengan el mismo tamaño?

El archivo de diseño actual se parece a esto:

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

Le agradecería si alguien pudiera mostrar la solución modificando el contenido del archivo pegado.

Gracias!

Respuesta

148

Utilice android:layout_width="0px" y android:layout_weight="1" en los tres Button s. Eso dice que los botones no deberían ocupar más de 0 píxeles, pero los tres deberían dividir cualquier espacio extra entre ellos. Eso debería darte el efecto visual que deseas.

+4

Si _REALLY_ deseaba, alternativamente, podría usar TableLayout con android: stretchColumns = "0,1,2". –

+0

Impresionante ... ¿entonces esto significa que si ponemos el ancho como 0px, el peso anulará la configuración? ¿Por que es esto entonces? – noob

+0

Esto funcionó perfectamente. – Proverbio

28

Otra forma es hacer android:layout_width="fill_parent" y android:layout_weight="1" esto también funciona bien!

+13

Estabas realmente entusiasmado con esta respuesta. :-) Me encanta el entusiasmo! –

+0

La solución de CommonsWare no funcionó para mí, ¡pero esto lo hizo! :) Utilicé "match_parent" porque escuché que debería preferirlo a "fill_parent", pero ambos funcionan. – codepleb

1

Escribí un EqualSpaceLayout que creo que resolverá su problema. Esto es similar al LinearLayout, pero no distorsiona el tamaño de las vistas secundarias. Compruébelo usted mismo: http://www.dev-smart.com/archives/225

16

Uso LinearLayout con su deseada weightSum y crear elementos con igual layout_weight. Aquí está un ejemplo ...

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

Por lo tanto, la suma del peso de todos los elementos es de 5. Aquí está la captura de pantalla ...

enter image description here

Tenga en cuenta que, se utilizan Google Material Design iconos. Espero que esto sea útil.

Cuestiones relacionadas