304 votes

Comment faire fonctionner ConstraintLayout avec des valeurs en pourcentage ?

Avec la Preview 1 d'Android Studio 2.2, Google a publié une nouvelle disposition dans sa bibliothèque de support : ConstraintLayout . Avec ConstraintLayout, il est plus facile d'utiliser un outil de conception dans Android Studio, mais je n'ai pas trouvé de moyen d'utiliser des tailles relatives (pourcentages ou "poids" comme dans LinearLayout). Existe-t-il un moyen de définir les contraintes en fonction des pourcentages ? Par exemple, faire en sorte qu'une vue occupe 40 % de l'écran, créer une marge de 20 % entre les vues, définir la largeur d'une vue à 50 % de la largeur d'une autre vue ?

375voto

uval Points 2127

Il peut être utile d'avoir une référence rapide ici.
Utilisation : une ligne directrice avec app:layout_constraintGuide_percent comme ça :

<android.support.constraint.Guideline
    android:id="@+id/guideline"
    android:layout_width="1dp"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.5"/>

Vous pourrez ensuite utiliser ces lignes directrices comme points d'ancrage pour d'autres points de vue.

252voto

Romain Guy Points 57114

Vous pouvez actuellement le faire de plusieurs façons. La première consiste à créer des lignes directrices (cliquez avec le bouton droit de la souris sur la zone de conception, puis cliquez sur Ajouter une ligne directrice verticale/horizontale). Vous pouvez ensuite cliquer sur l'"en-tête" de la ligne directrice pour modifier le positionnement en fonction du pourcentage. Enfin, vous pouvez contraindre les vues aux lignes directrices. Une autre méthode consiste à positionner une vue en utilisant un biais (pourcentage) et à ancrer d'autres vues à cette vue.

Cela dit, nous avons réfléchi à la manière de proposer des dimensions en pourcentage. Je ne peux rien promettre, mais c'est quelque chose que nous aimerions ajouter.

145voto

hoford Points 7

Depuis "ConstraintLayout1.1.0-beta1", vous pouvez utiliser le pourcentage pour définir les largeurs et les hauteurs.

android:layout_width="0dp"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent=".4"

Ceci définira le avec à 40% de la largeur de l'écran. Une combinaison de cette méthode et des directives en pourcentage vous permet de créer n'importe quelle mise en page basée sur le pourcentage que vous souhaitez.

95voto

Adam Points 830

Avec la nouvelle version de ConstraintLayout v1.1, vous pouvez maintenant faire ce qui suit :

<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintHeight_percent="0.2"
app:layout_constraintWidth_percent="0.65" />

Cela contraindra le bouton à occuper 20 % de la hauteur de l'écran et 65 % de sa largeur.

47voto

Suragch Points 197

Mode d'emploi des directives

La réponse acceptée est un peu floue quant à la manière d'utiliser les directives et à ce qu'est l'"en-tête".

Étapes

Ajoutez d'abord une ligne directrice.

enter image description here

Sélectionnez la ligne de guidage ou déplacez-la un peu pour rendre les contraintes visibles.

enter image description here

Cliquez ensuite sur le cercle rond (l'"en-tête") jusqu'à ce qu'il devienne un pourcentage. Vous pouvez ensuite faire glisser ce pourcentage vers le bas jusqu'à 50 % ou ce que vous voulez.

enter image description here

Après cela, vous pouvez contraindre votre vue à la ligne directrice pour qu'elle représente un certain pourcentage du parent (en utilisant la fonction match_constraint sur la vue).

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X