Il existe deux façons de réaliser cela à l'aide de ConstraintLayout
: Chaînes et des lignes Directrices. Utiliser des Chaînes, assurez-vous d'utiliser ConstraintLayout
Beta 3 ou plus récent et si vous souhaitez utiliser la mise en page visuelle de l'éditeur dans Android Studio, assurez-vous que vous utilisez Android Studio 2.3 Bêta 1 ou plus récent.
Méthode 1 - À L'Aide De Chaînes
Ouvrir l'éditeur de disposition et ajoutez vos widgets comme d'habitude, l'ajout de parent contraintes en tant que de besoin. Dans ce cas, j'ai ajouté deux boutons avec des contraintes à la partie inférieure de la mère et du côté de la mère (côté gauche) pour Enregistrer le bouton de droite et de pour bouton de Partage):
Notez que dans cet état, si je flip en vue paysage, les vues ne pas remplir le parent, mais ancrés dans les coins:
Mettre en évidence les deux points de vue, soit par Ctrl/Cmd cliquant ou en faisant glisser un cadre autour de la vue:
Puis cliquez-droit sur la vue et choisissez l'option "centrer Horizontalement":
Ceci définit une connexion bidirectionnelle entre les points de vue (qui est la façon dont la Chaîne est définie). Par défaut, la chaîne de style est de "répandre", applicable même si aucun attribut XML est inclus. Coller avec cette chaîne de style, mais le réglage de la largeur de notre point de vue à l' 0dp
permet à la vue de remplir l'espace disponible, répartissant uniformément à travers le parent:
Cela est plus perceptible en mode paysage:
Si vous préférez sauter la mise en page de l'éditeur, le XML résultant ressemblera à:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button_save"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/button_save_text"
android:layout_marginStart="8dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="4dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/button_share"
app:layout_constraintHorizontal_chainStyle="spread" />
<Button
android:id="@+id/button_share"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/button_share_text"
android:layout_marginStart="4dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintLeft_toRightOf="@+id/button_save"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</android.support.constraint.ConstraintLayout>
Détails:
- réglage de la largeur de chaque élément,
0dp
ou MATCH_CONSTRAINT
permet à la vue de combler le parent (en option)
- les points de vue doivent être reliés entre eux de façon bidirectionnelle (à droite du bouton enregistrer des liens pour partager bouton, à gauche du bouton partager des liens vers bouton enregistrer), cela va se faire automatiquement à l'aide de l'éditeur de mise lors du choix de "centrer Horizontalement"
- la première vue dans la chaîne peut spécifier la chaîne de style via
layout_constraintHorizontal_chainStyle
, voir la documentation pour les différents styles de la chaîne, si la chaîne de style est omis, la valeur par défaut est de "répandre"
- la pondération de la chaîne peut être ajustée via
layout_constraintHorizontal_weight
- cet exemple est pour une horizontale de la chaîne, il ya des attributs correspondants à la verticale des chaînes de
Méthode 2 - à l'Aide d'une Directive
Ouvrez votre disposition dans l'éditeur et cliquez sur la ligne directrice sur le bouton:
Puis sélectionnez "Ajouter de la Directive Verticale":
Une nouvelle ligne apparaît, que, par défaut, sera probablement ancré à gauche en valeur relative (notée par la gauche flèche):
Cliquez sur la gauche flèche pour passer à une valeur en pourcentage, puis faites glisser la ligne directrice de la 50% de la marque:
La directive peut maintenant être utilisé comme un point d'ancrage pour d'autres points de vue. Dans mon exemple, j'ai attaché le droit de l'enregistrer et le bouton à gauche du bouton "partager" à la ligne directrice:
Si vous voulez que le point de vue de remplir l'espace disponible, puis la contrainte doit être réglé sur "n'Importe quelle Taille" (les lignes ondulées de course à l'horizontale):
(C'est le même que le réglage de l' layout_width
de 0dp
).
Une directive peut également être créé en XML assez facilement plutôt que d'utiliser la mise en page de l'éditeur:
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/guideline"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />