2010-09-02 32 views
19

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 cambio, tengo que usar android:layout_weight. Pero me cuesta entenderlo y hacerlo bien. Especialmente cómo se calcula el tamaño real. ¿Hay alguna manera de obtener un valor porcentual (0, 100%) de android:layout_weight?Android: tratando de entender android: layout_weight

Pasé por algunos casos (ver la captura de pantalla adjunta) para describir los problemas. Los campos de color son todos <LinearLayout> con android:layout_height="fill_parent", porque quiero que la pantalla completa se divida entre esos.

Caso 1

alt text

bien, simple. Cada <LinearLayout> obtiene un 33%.

Caso 2

alt text

Ups ?! El primer (amarillo) <LinearLayout> desaparece por completo? ¿Por qué?

Caso 3

alt text

confundido de nuevo. El amarillo <LinearLayout> está de vuelta. Sin embargo, los dos primeros <LinearLayout> con el peso más pesado se hacen más pequeños? Que esta pasando?

Caso 4

alt text

no tengo absolutamente ninguna idea de lo que las matemáticas detrás de todo esto es.

Respuesta

25

¿Hay alguna forma de obtener un valor de porcentaje (0..100%) de Android: layout_weight?

Sure. Haga que sumen 100.

Para su "valor porcentual", desea que el android:layout_height de los elementos individuales dentro del LinearLayout sea 0px.

+8

Mark, has hecho mi día. No puede creer cuánto tiempo ya he pasado tratando de resolver los casos extraños. Y un simple 'android: layout_height =" 0px "' resuelve todo :-) – znq

+1

Configurando layout_width a "fill_parent" y layout_weight a un valor flotante como "0.2", "0.75" también funciona, en este caso, cuanto menor sea el número, más grande parte del espacio que tomará el elemento. ¿Podría decirnos si esta es una forma aceptable de hacerlo? – Yar

8

Cuando usa android: layout_height = "fill_parent" para las barras, no está dejando ningún espacio disponible. (Dado que están llenando el elemento principal). Debido a que los 3 están configurados para llenarse, la altura solicitada es en realidad 3 veces la altura principal, por lo que los pesos se están aplicando a un espacio restante negativo. Esto explica el comportamiento extraño que estás viendo, y por qué configurar el layout_height a 0px lo resuelve.

+0

El enlace está muerto. ¿Tu publicación de blog está disponible en otra parte? –

Cuestiones relacionadas