Diseño lineal y peso en Android
Siempre leo sobre este valor de peso divertido en la documentación de Android. Ahora quiero probarlo por primera vez pero no funciona en absoluto.
Según tengo entendido por la documentación, este diseño:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:text="Register"
android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
weight="1" />
<Button
android:text="Not this time"
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
weight="1" />
</LinearLayout>
Debes crear dos botones que estén alineados horizontalmente y compartan el espacio por igual. El problema es que los dos botones no crecen para llenar el espacio.
Me gustaría que los botones crecieran y llenaran toda la línea. Si ambos botones están configurados para coincidir con el padre, solo se muestra el primer botón y llena toda la línea.
Aceptado
3 cosas para recordar:
- establezca android:layout_width de los niños en "0dp"
- establezca android:weightSum del padre ( edición: como Jason Moore notó, este atributo es opcional, porque de forma predeterminada está configurado en la suma de diseño_peso de los niños)
- establezca android:layout_weight de cada niño proporcionalmente (por ejemplo, WeightSum="5", tres niños: diseño_peso="1", diseño_peso="3", diseño_peso="1")
Ejemplo:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="5">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="2" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="3" />
</LinearLayout>
Y el resultado:
No estás configurando la layout_weight
propiedad. Su código lee weight="1"
y debería leer android:layout_weight="1"
.