2011-01-13 16 views
9

¿Cómo puedo establecer una altura de componentes de diseño igual que otro componente: ejemplo: ¿Puedo configurar android: layout_height = "@ + id/info_box.height" o hacer algo similar?¿Cómo establecer la altura de un componente de disposición a la misma altura que otro componente?

Quiero la altura de la ImageView para que coincida con la de mi LinearLayout

ImageView android:id="@+id/border" 
    android:src="@drawable/frame" 
android:layout_below="@+id/title" 
android:layout_width="fill_parent" 
android:layout_height="????"  
android:scaleType="fitXY" 
android:drawingCacheQuality="auto" 
/> 

<LinearLayout 
android:id="@+id/info_box" 
android:orientation="vertical" 
android:layout_below="@+id/title" 
android:background="@layout/my_bg" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
> 
... other stuff . . 
</LinearLayout> 
+0

Umm. ¿Por qué no pones tu imagview EN tu distribución lineal y configuras la altura como fill_parent? – Falmarri

+0

@Falmarri: si su ImageView y LinearLayout están dentro de un LinearLayout horizontal (no especificado) que no tendrían el mismo resultado. Además, ¿puede tener fill_parent para un niño y wrap_content para el padre? Eso parece casi paradójico. – kcoppock

+0

Se requiere más información. ¿Cuál es el grupo de visualización raíz en el que se encuentran ImageView y LinerLayout? ¿Qué quieres lograr con tu diseño? –

Respuesta

4

La única manera de lograr esto es tener los dos puntos de vista sean parte del mismo contenedor. Un LinearLayout o RelativeLayout suelen ser adecuados para esto. También puedes lograr esto a través del código.

+0

¿Cómo lo harías si fueran parte del mismo contenedor? Creo que quiere que la escala de ImageView esté a la altura de LinearLayout. –

+0

No importa, lo encontré. En la vista de imagen: scaletype = "centercrop", layout_height = "fill_parent", y layout_width = "fill_parent". ¿La clave? scaletype = "centercrop" no funciona en el editor de diseño. –

1

Puede usar android:layout_weight.

Coloque sus dos vistas (borde e info_box) con fill_parent y el mismo valor layout_weight en el mismo LinearLayout con orientation = verticale.

Con esta técnica, borde e info_box tendrán la misma altura.

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

    <ImageView 
     android:id="@+id/border" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@+id/title" 
     android:layout_weight="2" 
     android:drawingCacheQuality="auto" 
     android:scaleType="fitXY" 
     android:src="@drawable/frame" /> 

    <LinearLayout 
     android:id="@+id/info_box" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@+id/title" 
     android:layout_weight="2" 
     android:background="@layout/my_bg" 
     android:orientation="vertical" > 

     ... other stuff . . 

    </LinearLayout> 

</LinearLayout> 
+1

él no quiere todas las vistas con fill_parent. Él quiere que uno sea wrap_content, y el otro sea tan alto como el primero. – Danail

+0

Puede cambiar el ancho y la altura del primer LinearLayout y elegir el tamaño que desee. Pero ImageView y el segundo LinearLayout siempre serán de la misma altura (o ancho), ya que tienen el mismo diseño_peso. – fingerup

+0

Efectivamente, layout_weight no es posible con wrap_content ... – fingerup

Cuestiones relacionadas