layout_weight - table layout android
Android: ¿cómo hacer crecer una vista para llenar el espacio disponible? (4)
Bueno:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageButton
android:id="@+id/button1"
android:src="@drawable/img1"
android:layout_width="50dip"
android:layout_alignParentTop="true"
android:layout_height="50dip">
</ImageButton>
<ImageButton
android:src="@drawable/img2"
android:layout_width="50dip"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/button1"
android:layout_height="50dip">
</ImageButton>
<EditText
android:layout_below="@id/button"
android:layout_width="wrap_content"
android:layout_height="fill_parent">
</EditText>
</RelativeLayout>
Los puntos clave del diseño son:
- Los ítems con tamaño fijo se colocan primero en el diseño, de esta forma cuando Android llega a calcular la altura de la altura de las cosas con
fill_parent
más adelante en el archivo solo toma en cuenta el espacio restante, no todo el espacio que posiblemente podría ocupar si nada más estaba allí - EditText tiene una altura de
fill_parent
(match_parent
enmatch_parent
) para que ocupe el resto del espacio disponible
Lo siento, no leí tu pregunta lo suficiente. El código anterior proporciona la respuesta si quieres hacerlo de forma vertical. Para un diseño horizontal, el código publicado por @Sunil debería funcionar.
Esto parece sencillo, pero no puedo entender cómo hacerlo. Tengo un diseño horizontal con un EditText y dos ImageButtons. Quiero que los ImageButtons sean de un tamaño fijo, y EditText para ocupar el espacio restante en el diseño. ¿Cómo se puede lograr esto?
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</EditText>
<ImageButton
android:src="@drawable/img1"
android:layout_width="50dip"
android:layout_height="50dip">
</ImageButton>
<ImageButton
android:src="@drawable/img2"
android:layout_width="50dip"
android:layout_height="50dip">
</ImageButton>
</LinearLayout>
Si desea mantener el diseño igual (es decir, botones después del texto), use la propiedad layout_weight
, junto con fill_parent
, por lo tanto:
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<EditText
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</EditText>
<ImageButton
android:src="@drawable/img1"
android:layout_width="50dip"
android:layout_height="50dip">
</ImageButton>
<ImageButton
android:src="@drawable/img2"
android:layout_width="50dip"
android:layout_height="50dip">
</ImageButton>
</LinearLayout>
Dar el ''peso'' de EditText
hace que se solucione al final y da prioridad a los botones. ¡Juega con los diferentes pesos de diseño y descubre la diversión que puedes tener!
Utilice set el layout_width
o layout_height
en 0dp
(por la orientación que desea llenar el espacio restante). Luego usa el layout_weight
para que ocupe el espacio restante.
prueba esto en un diseño relativo
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageButton
android:id="@+id/btn1"
android:src="@drawable/icon"
android:layout_width="50dip"
android:layout_height="50dip"
android:layout_alignParentRight="true"/>
<ImageButton
android:id="@+id/btn2"
android:src="@drawable/icon"
android:layout_width="50dip"
android:layout_height="50dip"
android:layout_toLeftOf="@+id/btn1"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/btn2">
</EditText>
</RelativeLayout>