Ok, tout d’abord, j’ai cherché sur internet, mais personne n’a le même problème. Donc, tout ce que je veux, c’est avoir 3 textViews, alignées en bas avec l’écran et avec la même largeur. Voici une image représentant ce que je veux:
Et voici mon code:
Eh bien, cela fonctionne quand les 3 textViews ont la même hauteur, mais quand leur taille diffère, j’obtiens le résultat suivant:
Un autre comportement étrange, c’est que lorsque je mets la “layout_gravity” du plus gros texte à “centre-vertical”, j’obtiens le résultat suivant:
Alors évidemment, je suis devenu fou et j’ai essayé une autre combinaison avec le centre-vertical, mais rien ne fonctionnait comme je le souhaitais au départ:
Donc, des conseils sur la façon de résoudre ce problème?
Toutes les autres réponses sont fausses. Les points importants:
RelativeLayout
. Vous pouvez le faire avec juste un LinearLayout
. android:baselineAligned="false"
. En fait, j’ai seulement trouvé cela en regardant à travers la source LinearLayout
. C’est dans les docs mais ils ne mentionnent pas qu’il est activé par défaut! En tout cas, voici le code:
Et comment ça a l’air:
D’accord. J’ai donc eu le même problème, mais avec des boutons à bascule au lieu de vues de texte. Pour une raison quelconque, si l’un des éléments de LinearLayout (Horizontal) a une hauteur différente de celle des autres vues de la disposition et est définie pour avoir la même gravité que les autres, la gravité est effectivement “ignorée”.
J’ai réussi à obtenir le comportement souhaité en encapsulant chaque vue dans un RelativeLayout et en définissant Android: gravity sur la disposition relative au lieu d’android: layout_gravity sur chaque bouton. J’ai également déplacé l’androïde: layout_weight du bouton vers la disposition relative.
Donc, au lieu d’avoir:
Ce qui donne le même problème que signalé, j’ai plutôt fait:
**MODIFIER:
Si cela ne fait pas tout, ajoutez le drapeau aligné comme indiqué dans l’une des réponses ci-dessous par Timmmmm. C’est une meilleure façon.
Utilisez ceci
MISE EN PAGE MODIFIÉE : Ok, je l’ai édité et ajouté des couleurs et de la gravité pour laisser les vues de texte en bas ont la même hauteur et la même largeur, ainsi que le texte en bas et au centre de chaque vue.
Il devrait faire exactement ce que vous avez demandé.
Il utilise un LinearLayout dans un RelativeLayout, mais il est parfois nécessaire de les imbriquer pour obtenir ce que nous voulons. Ajoutez d’autres vues que vous pourriez souhaiter dans la mise en page relative et vous aurez toujours vos textes en bas tant que le dernier enfant de votre RelativeLayout est ce LinearLayout comme indiqué ci-dessus.
Identique à la réponse de Timmm, mais vous pouvez également utiliser android:gravity="bottom"
pour l’atsortingbut LinearLayout
au lieu d’ android:layout_gravity="bottom"
pour chaque TextView
.
Comme ça:
Si vous êtes d’accord avec un RelativeLayout au lieu de Linear, cela fera l’affaire, je suppose:
Si vous essayez de faire en sorte que les trois vues enfants aient la même hauteur, puis changez de hauteur à “0”, définissez android: weightSum du LinearLayout sur 3 et définissez le Android: layout_weight de chaque vue sur 1.