Je conçois l'interface utilisateur de mon application. J'ai besoin d'une mise en page qui ressemble à ceci:
(<et> sont des boutons). Le problème est que je ne sais pas comment m'assurer que TextView remplira l'espace restant, avec deux boutons de taille fixe.
Si j'utilise fill_parent pour la vue texte, le deuxième bouton (>) ne peut pas être affiché.
Comment créer une mise en page qui ressemble à l'image?
android
layout
android-layout
Luke Vo
la source
la source
Réponses:
La réponse de woodshy a fonctionné pour moi, et elle est plus simple que la réponse d'Ungureanu Liviu puisqu'elle ne l'utilise pas
RelativeLayout
. Je donne ma mise en page pour plus de clarté:la source
alignLeft
etalignParentLeft
, etc., qui ne peuvent jamais être réalisées avecLinearLayout
.Dans le cas où <TEXT VIEW> est placé dans LinearLayout, définissez la propriété Layout_weight de <et> sur 0 et 1 pour TextView.
En cas de RelativeLayout, alignez <et> à gauche et à droite et définissez les propriétés "Mise en page à gauche de" et "Mise en page à droite de" de TextView sur les identifiants de <et>
la source
Si vous utilisez
RelativeLayout
, vous pouvez le faire quelque chose comme ceci:la source
>
bouton?En utilisant a
ConstraintLayout
, j'ai trouvé quelque chose commetravaux. La clé est de définir les contraintes de bord droit, gauche, supérieur et inférieur de manière appropriée, puis de définir la largeur et la hauteur sur
0dp
et de le laisser déterminer sa propre taille.la source
TextView
a les contraintes gauche et droite. LeTextView
ne s'étire pas si le premierButton
a la contrainte de droite sur leTextView
et le dernierButton
a la contrainte de gauche sur leTextView
.C'est simple Vous définissez la minWidth ou minHeight, dépend de ce que vous recherchez, horizontal ou vertical. Et pour l'autre objet (celui dont vous voulez remplir l'espace restant) vous définissez un poids de 1 (définissez la largeur pour envelopper son contenu), donc il remplira le reste de la zone.
la source
vous pouvez utiliser l'attribut layout_weight élevé. Ci-dessous, vous pouvez voir une disposition où ListView prend tout l'espace libre avec des boutons en bas:
la source
Pour ceux qui ont le même problème avec
<LinearLayout...>
que moi:Il est important de préciser
android:layout_width="fill_parent"
, cela ne fonctionnera pas avecwrap_content
.OTOH, vous pouvez omettre
android:layout_weight = "0"
, ce n'est pas obligatoire.Mon code est fondamentalement le même que le code dans https://stackoverflow.com/a/25781167/755804 (par Vivek Pandey)
la source
Vous devez éviter d'imbriquer 2 disposition relative car la disposition relative fait toujours passer 2 pour le dessin (contre 1 pour tout autre type de disposition). Cela devient exponentiel lorsque vous les imbriquez. Vous devez utiliser une disposition linéaire avec width = 0 et weight = 1 sur l'élément dont vous souhaitez remplir l'espace à gauche. Cette réponse est meilleure pour les performances et les pratiques. N'oubliez pas: utilisez la mise en page relative UNIQUEMENT lorsque vous n'avez pas d'autre choix.
la source
Vous pouvez utiliser définir le
layout_width
oulayout_width
sur0dp
(selon l'orientation que vous souhaitez remplir l'espace restant). Utilisez ensuite lelayout_weight
pour remplir l'espace restant.la source
utiliser un Relativelayout pour envelopper LinearLayout
la source
j'ai trouvé
la source
Lorsque vous utilisez une disposition relative, vous pouvez étirer une vue en l'ancrant aux deux vues vers lesquelles elle est censée s'étirer. Bien que la hauteur spécifiée ne soit pas prise en compte, Android nécessite toujours un attribut de hauteur, c'est pourquoi j'ai écrit "0dp". Exemple:
la source