layout_width layout_weight examples ejemplo dinamico constraint android android-layout

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