web-dev-qa-db-fra.com

Comment regrouper plusieurs vues dans un ConstraintLayout

J'ai ajouté 3 boutons dans un ConstraintLayout. J'ai ajouté un bouton pour désactiver ou activer ces boutons.

Si j'utilisais LinearLayout normal. J'aurais pu mettre tous les boutons dans une disposition linéaire et activer ou désactiver cette disposition particulière.

Mais j'utilise ConstraintLayout. J'ai donc besoin de désactiver ou d'activer tous ces boutons, je crois qu'il doit y avoir un moyen dans ConstraintLayout de regrouper différentes vues.

Veuillez me guider sur la façon de regrouper les vues dans ConstriantLayout

enter image description here

  <Button
        Android:text="Button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/button"
        Android:layout_marginTop="16dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        Android:layout_marginBottom="16dp"
        Android:layout_marginStart="16dp"
        app:layout_constraintLeft_toLeftOf="parent"
        Android:layout_marginLeft="16dp" />

    <Button
        Android:text="Button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/button2"
        app:layout_constraintBottom_toBottomOf="parent"
        Android:layout_marginBottom="16dp"
        Android:layout_marginStart="8dp"
        app:layout_constraintLeft_toRightOf="@+id/button"
        Android:layout_marginLeft="8dp"
        app:layout_constraintTop_toTopOf="@+id/button" />

    <Button
        Android:text="Button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/button3"
        app:layout_constraintTop_toTopOf="@+id/button2"
        Android:layout_marginEnd="16dp"
        app:layout_constraintRight_toRightOf="parent"
        Android:layout_marginRight="16dp"
        Android:layout_marginStart="8dp"
        app:layout_constraintLeft_toRightOf="@+id/button2"
        Android:layout_marginLeft="8dp" />
16
Kirmani88

Oui, car je sais que vous pouvez gérer la visibilité en utilisant une disposition linéaire mais pas Activer/Désactiver les vues, je pense, corrigez-moi si je me trompe. Alors maintenant, dans ConstraintLayout , nous pouvons également gérer la visibilité d'un groupe particulier de vues en utilisant le groupe

Il s'agit d'une nouvelle fonctionnalité introduite dans ConstraintLayout qui est actuellement en version bêta.

Comment ajouter beta ConstraintLayout au projet, suivez les étapes ci-dessous

ajouter la prise en charge maven dans le fichier gradle du projet comme ci-dessous

allprojects {
    repositories {
        maven { url 'https://maven.google.com' }
        jcenter()
    }
}

puis dans les dépendances de l'application, ajoutez la dépendance de la bibliothèque ConstarintLayout

compile 'com.Android.support.constraint:constraint-layout:1.1.0-beta3'

maintenant, vous devez ajouter un groupe dans votre ConstraintLayout comme suit

<Android.support.constraint.Group
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        app:constraint_referenced_ids="button7,button3,button2"
        Android:id="@+id/group" />  

où dans l'ID de référence du groupe

app:constraint_referenced_ids="button7,button3,button2"

contient les identifiants de vue séparés par des virgules que vous souhaitez gérer au moment de l'exécution , donc dans l'activité vous liez simplement Group comme ci-dessous et gérez la visibilité

import Android.support.constraint.Group; //import statement in activity

Group group=(Group)findViewById(R.id.group);//bind view from xml
group.setVisibility(View.VISIBLE);//this will visible all views
group.setVisibility(View.GONE);//this will set Gone to all views
group.setVisibility(View.INVISIBLE);//this will set INVISIBLE to all view

EDIT Version stable de ConrtsaintLayout 1.1.0 publiée le 12 avril 2018 https://androidstudio.googleblog.com/2018/04/constraintlayout- 110.html

implémentation 'com.Android.support.constraint: constraint-layout: 1.1.0'

Modifier Android X Si quelqu'un utilise Android x package, vous pouvez trouver des informations sur le package ici

https://developer.Android.com/jetpack/androidx/migrate

42
Pavan

Actuellement, il n'y a aucun moyen de le faire. Vous devez désactiver chaque bouton individuellement, car des contraintes sont ajoutées à chaque widget dans la disposition de contraintes.

Pour regrouper des vues, vous devez utiliser des groupes de vues, ce qui n'a pas de sens dans le contexte de la disposition des contraintes.

Modifier

Avec la disposition Contrainte: 1.1.0-beta1, vous pouvez grouper les vues à l'aide de Android.support.constraint.Group.

1
Arnav Rao