GridLayout aligner les enfants dans la colonne
J'ai un GridLayout
qui se compose de 6 enfants. Il a un nombre de colonnes de 2. La colonne de gauche des enfants ont un layout_gravity
de start|end|fill_horizontal
et layout_width
de 0dp, ce qui les amène à remplir tout l'espace disponible.
Ce qui est excellent, et me donne le résultat indiqué ci-dessous.
Vues 4, 5, et 6 sont seulement aussi grand que ils ont besoin pour être. Très cool. Je voudrais maintenant aligner les vues 4, 5, et 6 à droite du conteneur, mais cela s'est avéré difficile. En raison de la façon GridLayout
détermine la colonne de flexibilité, en donnant la colonne de droite de la vue sur un layout_gravity
de right
ruines de la mise en page. Vues dans la première colonne de ne plus remplir la largeur restante dans la mise en page. (À partir de ma compréhension, c'est parce que maintenant les deux colonnes ont des enfants, la définition horizontale de la gravité, de sorte GridLayout
ne peut plus marquer une colonne souple).
Est-il un moyen pour y parvenir? Je ne suis vraiment pas vif sur la nidification de la LinearLayout
s. Ci-dessous mon résultat souhaité.
Pour la référence, le point de vue actuel de la hiérarchie XML ressemble à quelque chose comme...
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="2">
<View
android:id="@+id/view1"
android:layout_gravity="start|end|fill_horizontal" />
<View
android:id="@+id/view4" />
<View
android:id="@+id/view2"
android:layout_gravity="start|end|fill_horizontal" />
<View
android:id="@+id/view5" />
<View
android:id="@+id/view3"
android:layout_gravity="start|end|fill_horizontal" />
<View
android:id="@+id/view6" />
</GridLayout>
source d'informationauteur Chris Horner
Vous devez vous connecter pour publier un commentaire.
À partir de la Documentation de GridLayout:
(l'emphase est mienne)
Donc, pour la conception de la sortie suivante:
Explication:
Remarque:
Ne pas aligner la gravité de la largeur est la plus grande composante de la colonne de droite avec l'axe (haut, bas, gauche, droite). Lorsqu'une vue est aligné w.r.t à l'axe, il ne sera pas étirer parce que le groupe composé deviendra non flexible. Cela rendra les autres éléments dans le groupe composé d'une réduction (même si fill_horizontal est spécifié, il sera inefficace dans un non-composites souples groupe). La largeur de la plus grande composante sera la largeur de la partie droite de la colonne dans la grille.
Si vous souhaitez que le texte envelopper lorsque la longueur de l'augmentation de la quantité d'spécifier la largeur de la vue que 0dp (
android:layout_width="0dp"
), de sorte que la grille de mise en page de façon dynamique calculer la largeur:XML pour la grille de mise en page:
Permettez-moi de modifier ma réponse et d'utiliser une approche différente. C'est le fichier de mise en page:
Et voici le résultat:
La largeur de la colonne est alimentée par le contenu. Pour Afficher 5 je rembourrage supplémentaire sur le côté gauche, c'est à dire le rembourrage peut être utilisé pour étendre la largeur (et hauteur) des cellules. Serait-ce de travailler?