Android: tratando de entender Android: Layout_weight
-
26-09-2019 - |
Pregunta
Estoy tratando de dividir una página en tres partes. Me gustaría hacerlo en valores porcentuales, sin embargo, eso no es compatible con Android. En su lugar tengo que usar android:layout_weight
. Pero me cuesta entenderlo y hacerlo bien. Especialmente cómo se calcula el tamaño real. ¿Hay alguna forma de obtener un valor porcentual (0..100%) de android:layout_weight
?
Pasé por algunos casos (ver captura de pantalla adjunta) para describir los problemas. Los campos de colores son todos <LinearLayout>
con android:layout_height="fill_parent"
, porque quiero que la pantalla completa se divida entre ellos.
Caso 1
Está bien, simple. Cada <LinearLayout>
Obtiene el 33%.
Caso 2
¡¿UPS?! El primero (amarillo) <LinearLayout>
desaparece por completo? ¿Por qué?
Caso 3
Confundido de nuevo. El amarillo <LinearLayout>
está de vuelta. Sin embargo, los dos primero <LinearLayout>
¿Con el peso más pesado se hace más pequeño? ¿Qué está pasando?
Caso 4
No tengo absolutamente ninguna idea de cuáles son las matemáticas detrás de todo esto.
Solución
¿Hay alguna forma de obtener un valor porcentual (0..100%) de Android: Layout_weight?
Por supuesto. Haz que suman hasta 100.
Para su "valor porcentual", desea el android:layout_height
de los elementos individuales dentro del LinearLayout
ser - estar 0px
.
Otros consejos
Cuando usa Android: Layout_height = "Fill_parent" para las barras, no está dejando ningún espacio disponible. (Dado que están llenando a los padres). Debido a que los 3 están configurados para llenar, la altura solicitada es en realidad 3 veces la altura de los padres, por lo que los pesos se aplican a un espacio negativo restante. Esto explica el comportamiento extraño que está viendo y por qué establecer LEYOUT_HEight en 0PX lo resuelve.