LinearLayout
es una vista de grupo donde todas sus vistas hija se alinean en una sola dirección: horizontal o vertical. Utilizaremos el atributo android:orientation
para especificar la orientación de su contenido.LinearLayout
respetará los márgenes (android:layout_marginLeft
, android:layout_marginRight
, etc) y las alineaciones (android:layout_gravity
) de sus vistas hija con respecto a su vista padre.Asignación de pesos.
A las vistas hija de una plantilla de tipoLinearLayout
se les puede asignar un peso: atributo android:layout_weight
. Este peso es un valor entero que determinará el espacio que ocupa la vista dentro de su vista padre. A mayor peso, mayor será el espacio que ocupe la vista en su vista padre. El peso por defecto es 0
y significa que el tamaño de la vista se ajustará a su contenido.Por ejemplo, si contamos con tres campos de texto y dos de ellos declaran un peso de
1
, mientras que al tercero no se le ha asignado peso, éste último se acabará ajustando a su propio contenido y los otros dos se repartirán el espacio sobrante por igual. Supongamos que hubiésemos asignado un peso de 2
al tercer campo en lugar de 0
, en este caso, al ser la suma total de pesos igual a 4
, dividiremos el espacio total en 4
partes imaginarias de las cuales, los dos primeros campos ocuparán 2
partes y el tercer campo otras 2
. Es decir, que el tercer campo ocupa justo la mitad del espacio disponible y los dos primeros ocuparán una cuarta parte cada uno.Truco. Para asignar el mismo espacio a todas las vistas contenidas en una plantilla con distribución lineal, procederemos de la siguiente manera:
- Si la plantilla tiene orientación vertical, asignaremos el valor
0dp
al atributoandroid:layout_height
y el valor1
al atributoandroid:layout_weight
de todas las vistas hija. - Si la plantilla tiene orientación horizontal, asignaremos el valor
0dp
al atributoadroid:layout_width
y el valor1
al atributoandroid:layout_weight
de todas las vistas hija.
Ejemplo.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:orientation="vertical" >
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/to" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/subject" />
<EditText
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="top"
android:hint="@string/message" />
<Button
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="@string/send" />
</LinearLayout>
El resultado quedaría de la forma:Todas las vistas hija sin peso especificado (valor
0
por defecto) se ajustan a sus contenidos a excepción de la vista donde se muestra el mensaje, cuyo tamaño se ajustará a todo el espacio sobrante (la suma total de pesos en este caso vale 1
).
No hay comentarios:
Publicar un comentario