2011-01-16 17 views
5

Como parte de una interfaz de usuario más grande, tengo un RelativeLayout con tres vistas que me gustaría tener el mismo ancho. Los tres puntos de vista se "apilan" en la parte superior de uno al otro como este¿Cómo hacer que múltiples vistas tengan el mismo ancho?

  1. ImageView
  2. TextView
  3. ImageView

He intentado varias cosas, como la definición de los View s'a android:layout_width "wrap_content", estableciendo android:layout_width en "0px" y android:layout_weight en "1" como lo sugiere this answer, y colocando el View en un LinearLayout sin éxito.

¿Cómo puedo hacer que estas tres vistas tengan el mismo ancho?

porción relevante del diseño xml:

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="0px" 
    android:layout_weight="1"> 
     <ImageView 
      android:layout_above="@string/window_text" 
      android:layout_below="@string/eighteen_id" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:paddingTop="5dp" 
      android:layout_alignParentRight="true" 
      android:paddingBottom="5dp" 
      android:src="@drawable/line1" 
      android:id="@string/line_1_id"/> 
     <TextView 
      android:layout_above="@string/line_2_id" 
      android:layout_height="wrap_content" 
      android:layout_width="fill_parent" 
      android:gravity="right" 
      android:layout_centerVertical="true" 
      android:textColor="#000000" 
      android:id="@string/window_text"/> 
     <ImageView 
      android:layout_above="@string/top_row_id" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:layout_alignParentRight="true" 
      android:paddingTop="5dp" 
      android:paddingBottom="10dp" 
      android:src="@drawable/line1" 
      android:id="@string/line_2_id"/> 
</RelativeLayout> 
+0

que está mostrando un RelativeLayout, no un LinearLayout? –

+0

Tengo varias otras 'View's bajo este' RelativeLayout' que usan posicionamiento relativo. –

Respuesta

19

Esto es muy simple, ver a continuación. La "magia" es simple. Establezca el elemento primario en wrap_content y las vistas secundarias para completar el elemento primario. Las vistas secundarias más pequeñas siempre se configuran con el tamaño de la vista infantil más grande.

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

    <LinearLayout 
     android:id="@+id/bottom_row" 
     android:orientation="vertical" 
     android:layout_alignParentBottom="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 

     <Button 
      android:id="@+id/view1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="123" /> 

     <Button 
      android:id="@+id/view2" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="more text" /> 

     <Button 
      android:id="@+id/view3" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="even more text" /> 
    </LinearLayout> 
</RelativeLayout> 

alt text

1

¿Usted intentó establecer androide: layout_width = "fill_parent" para las dos vistas de imágenes, al igual que lo tienes para la Vista de Texto? Si desea que las tres vistas tengan el ancho más ancho, puede ajustar las tres en LinearLayout que tiene android: layout_width = "wrap_content".

+0

Intenté ambas sugerencias pero no funcionaron. El texto desborda las imágenes tanto en el lado derecho como en el izquierdo. –

0

Puede obtener las vistas de imagen para completar el ancho principal configurando android: scaleType = "" en ImageView pero si el texto no llena el ancho de la pantalla y desea que el ancho de la imagen coincida exactamente con el ancho del texto, Tendrás que hacerlo programaticamente obteniendo el ancho de las vistas de texto y luego ajustando el ancho de la vista de la imagen a eso.

+0

Me topé con todo lo contrario. Quería que mis TextView no ampliaran su ancho más allá del ancho de mi ImageView. TextViews, cuando se establece en wrap_content, era mucho más ancho que ImageView. Así que tuve que establecer su ancho en el código. Un elemento layout_matchWidth sería bueno tener dentro de RelativeLayout. – Mark

Cuestiones relacionadas