Android: Essayer de comprendre Android: Layout_weight
-
26-09-2019 - |
Question
J'essaie de diviser une page en trois parties. Je voudrais le faire en pourcentage de valeurs, mais cela n'est pas pris en charge par Android. Au lieu de cela, je dois utiliser android:layout_weight
. Mais j'ai du mal à le comprendre et à bien faire les choses. Surtout comment la taille réelle est calculée. Existe-t-il un moyen d'obtenir une valeur de pourcentage (0..100%) android:layout_weight
?
J'ai parcouru quelques cas (voir la capture d'écran ci-jointe) pour décrire les problèmes. Les champs colorés sont tous <LinearLayout>
avec android:layout_height="fill_parent"
, parce que je veux que le plein écran soit divisé entre ceux-ci.
Cas 1
D'accord, simple. Tous <LinearLayout>
obtient 33%.
Cas 2
UPS?! Le premier (jaune) <LinearLayout>
disparaît complètement? Pourquoi?
Cas 3
Confus à nouveau. Le jaune <LinearLayout>
est de retour. Cependant, les deux premiers <LinearLayout>
Avec le poids plus lourd, devenir plus petit? Que se passe-t-il?
Cas 4
Je n'ai absolument aucune idée des mathématiques derrière tout cela.
La solution
Existe-t-il un moyen d'obtenir une valeur de pourcentage (0..100%) sur Android: Layout_weight?
Bien sûr. Faites-les ajouter jusqu'à 100.
Pour votre "valeur de pourcentage", vous voulez le android:layout_height
des articles individuels dans le LinearLayout
être 0px
.
Autres conseils
Lorsque vous utilisez Android: Layout_Height = "Fill_parent" pour les barres, vous ne laissez aucun espace disponible. (Puisqu'ils remplissent le parent.) Parce que les 3 sont réglés pour remplir, la hauteur demandée est en fait 3x la hauteur du parent, donc les poids sont appliqués à un espace restant négatif. Cela explique le comportement étrange que vous voyez, et pourquoi le réglage Layout_Height sur 0px le résout.