123 votes

Définissez la largeur pour qu'elle corresponde aux contraintes dans ConstraintLayout

Je tiens à contraindre une Vue côtés gauche et droit de c'est parent de la vue des marges et de la faire remplir l'espace imparti. Toutefois, le réglage de la largeur, soit match_parent ou wrap_content semble produire le même résultat.

Est-il quelque chose d'équivalent à match_constraints (par opposition à match_parent et wrap_content)? N' match_parent et wrap_content d'affecter la mise en page ou sont-ils ignorés dans la nouvelle contrainte de mise en page?

Aimer ce nouveau système de mise en page pour ma plateforme préférée!

193voto

Arieck Points 1357

match_parent n'est pas autorisé. Mais vous pouvez en réalité définir la largeur et la hauteur sur 0dp et définir les contraintes supérieure et inférieure ou gauche-droite sur "parent".

Ainsi, par exemple, si vous voulez avoir la contrainte match_parent sur la largeur de l'élément, vous pouvez le faire comme ceci:

 <TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent"/>
 

160voto

brob Points 694

match_parent n'est pas pris en charge. Avec 0dp , vous pouvez considérer vos contraintes comme "évolutives" plutôt que comme "remplir ce qui reste".

De plus, 0dp peut être défini par une position, où match_parent s'appuie sur son parent pour sa position (x, y et la largeur, hauteur)

32voto

gnB Points 760

Apparemment match_parent est :

  • PAS OK pour les points de vue directement en vertu de l' ConstraintLayout
  • OK pour les vues imbriquées à l'intérieur des points de vue qui sont directement sous ConstraintLayout

Donc, si vous avez besoin de votre point de vue, la fonction de match_parent, alors:

  1. Les enfants directs de l' ConstraintLayout devez utiliser 0dp
  2. Les éléments imbriqués (par exemple, le petit-ConstraintLayout) peut utiliser match_parent

Exemple:

<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="16dp">

    <android.support.design.widget.TextInputLayout
        android:id="@+id/phoneNumberInputLayout"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent">

        <android.support.design.widget.TextInputEditText
            android:id="@+id/phoneNumber"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </android.support.design.widget.TextInputLayout>

19voto

Marcin Koziński Points 5845

match_parent n'est pas pris en charge par ConstraintLayout . Définissez la largeur sur 0dp pour la faire correspondre aux contraintes.

18voto

xymelon Points 45

À partir de la doc officielle:

Important: MATCH_PARENT n'est pas recommandé pour les widgets contenus dans un ConstraintLayout. Un comportement similaire peut être défini à l'aide de MATCH_CONSTRAINT avec le correspondant gauche/droite ou haut/bas les contraintes de "parent".

Donc, si vous voulez atteindre MATCH_PARENT d'effet, vous pouvez faire ceci:

<TextView
    android:id="@+id/textView"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:text="TextView"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

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