web-dev-qa-db-fra.com

Impossible de former une chaîne entre deux vues/widgets dans Android Studio

Lorsque j'utilise l'éditeur de disposition dans Android Studio et que j'essaie de créer une chaîne (contrainte bidirectionnelle) entre un EditTextView et un ButtonView en utilisant les ancres de contrainte, cela ne fait pas la chaîne. 

Cela ne crée une contrainte que si j'essaie de contraindre un View à l'autre.

J'essaie d'enchaîner le côté droit du EditText sur le côté gauche du Button

Voici à quoi ressemble mon éditeur de mise en page:

Layout Editor

41
C.Kraz

J'essayais de comprendre cela aussi. J'ai découvert qu'une façon de le faire est de sélectionner les deux vues, puis de cliquer avec le bouton droit de la souris et de sélectionner Centrer horizontalement. Cela crée la chaîne, mais vous devez ensuite ajuster les autres contraintes en conséquence. Je suis nouveau sur Android, donc je suis sûr qu'il y aura d'autres moyens ....

17
Swud

J'ai eu le même problème. Résolu en entrant dans le XML comme indiqué dans le tutoriel: https://developer.Android.com/training/basics/firstapp/building-ui.html

Dans le didacticiel, cliquez sur "Voir le format XML final" et comparez. Mon XML était manquant:

app:layout_constraintLeft_toRightOf="@+id/editText"
12
Gustav Eriksson

Dans Android Studio 3.0.1, choisissez les deux objets (sous l’onglet Création xml) et cliquez avec le bouton droit de la souris sur l’un d’eux. Vous aurez alors sous «chaîne» deux options: une pour chaîner horizontalement et une autre pour chaîner verticalement.

 enter image description here

5
Ori Elkobi

J'ai une solution qui ne sera probablement pas la meilleure tant que personne ne répondra correctement, mais cela fonctionnera. J'espère que cela aidera les autres gars qui sont restés coincés au même endroit que moi afin que vous puissiez continuer le travail.

On dirait que l'interface du studio Android ne fonctionne pas correctement lorsqu'il est venu créer des chaînes. Certaines options des personnes ici travaillent pour 2 ou 3 éléments, mais I a 5 éléments.

Donc, la réponse est de résoudre ceci dans le code XML.

Mes pas sont pour Horizontal arrangement, si vous voulez vertical changez juste Droite/Gauche pour Haut/Bas

Je mets tous les éléments à la place que je veux et enlève toutes les connexions. (Que dans mon cas, je connecte le haut et le bas afin qu'ils puissent être au milieu.)

Ensuite, je connecte le premier élément à gauche et le dernier élément à droite. Et connectez le droit de chaque élément dans le côté gauche du prochain élément.

app:layout_constraintRight_toLeftOf="@id/right_element"

Image des éléments se connectent normalement, pas encore de chaîne

Après cela, je vais dans le code et mets manuellement la connexion à l'élément de gauche.

app:layout_constraintLeft_toRightOf="@+id/left_element"

Et la chaîne a été créée . Image des éléments se connecter avec la chaîne

J'espère que cette aide, désolée pour ne pas poster les photos, je n'ai pas encore assez de réputation XD.

3
Canato

Résolu en ajoutant des contraintes dans le texte de saisie (app: layout_constraintRight_toLeftOf = "@ + id/button") et le bouton (app: layout_constraintBaseline_toBaselineOf = "@ + id/editText")

Exemple complet comme ci-dessous

<EditText
    Android:id="@+id/editText"
    Android:layout_width="245dp"
    Android:layout_height="wrap_content"
    Android:layout_marginLeft="16dp"
    Android:layout_marginStart="16dp"
    Android:ems="10"
    app:layout_constraintRight_toLeftOf="@+id/button"
    Android:hint="@string/edit_message"
    Android:inputType="textPersonName"
    app:layout_constraintLeft_toLeftOf="parent"
    Android:layout_marginTop="16dp"
    app:layout_constraintTop_toTopOf="parent" />

<Button
    Android:id="@+id/button"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="Button"
    Android:layout_marginRight="16dp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintBaseline_toBaselineOf="@+id/editText"
    app:layout_constraintLeft_toRightOf="@+id/editText"
    Android:layout_marginLeft="16dp" />
1
Anurag

La façon dont j'ai pu créer une vue en chaîne dans la mise en page du plan directeur est par un clic de souris, sélectionnez les objets à lier. Puis, pendant qu'ils sont sélectionnés, faites un clic droit et sélectionnez "centrer horizontalement". Cela fait, je peux ensuite créer l'autre contrainte et chaîne.

1
james

je pense que l'éditeur d'Android Studio a besoin de plus d'améliorations pour la création d'une chaîne. J'utilise actuellement Android Studio Preview 3.0 Canary 3.

Parfois, dans l'éditeur, cela fonctionne parfaitement, mais parfois pas. Lorsque la liaison ne se produit pas dans l'éditeur graphique, nous devons ajouter une contrainte manuellement, conformément aux exigences.

layout_constraintTop_toTopOf
layout_constraintTop_toBottomOf
layout_constraintBottom_toTopOf
layout_constraintBottom_toBottomOf
layout_constraintBaseline_toBaselineOf
layout_constraintStart_toEndOf
layout_constraintStart_toStartOf
layout_constraintEnd_toStartOf
layout_constraintEnd_toEndOf

et aussi nous déclarons le style de chaîne manuellement en XML comme suit

layout_constraintHorizontal_chainStyle ou layout_constraintVertical_chainStyle

CHAIN_SPREAD -- the elements will be spread out (default style)

Chaîne pondérée -- in CHAIN_SPREAD mode, if some widgets are set to MATCH_CONSTRAINT, they will split the available space

CHAIN_SPREAD_INSIDE -- similar, but the endpoints of the chain will not be spread out

CHAIN_PACKED -- the elements of the chain will be packed together. The horizontal or vertical bias attribute of the child will then affect the positioning of the packed elements

espérons que l'éditeur de studio Android améliorera cette

1
Pavan

J'ai désobéi au tutoriel en activant Autoconnect (parce que j'essayais tout).

J'ai sélectionné les deux widgets, puis Centré horizontalement. La chaîne a été créée, j'ai désactivé Autoconnect, puis poursuivi le didacticiel.

0
4dc0

J'ai eu le même problème avant, et d'après ce que je peux dire, nous avons le même problème.

Le tutoriel s'attend à ce que vous utilisiez la version d'Android Studio 3. Quand j'ai eu ce problème, j'ai réalisé que mon studio Android était toujours 2.2.3. Après avoir installé la mise à jour pour la version 3 et sdk, etc. à la dernière version, cela a fonctionné.

J'espère que cela t'aides.

0
ikiSiTamvaaan

Une astuce lorsque vous suivez le didacticiel est de vous assurer qu'Android Studio est à jour. Je me demandais où se trouvaient certains boutons lorsque je suivais les tutoriels, mais j'ai constaté que j'utilisais une version plus ancienne. 

En termes de question, le meilleur est donné par James @ 06/06/17.

  1. Ajouter trois boutons dans la vue
  2. Sélectionnez-les tous et faites un clic droit
  3. Sélectionnez "Centrer horizontalement"

Cela fait l'affaire pour créer la chaîne

0
Charith

L'onglet DESIGN est très sujet aux bugs! Faites juste ce que vous voulez faire dans la conception mais écrivez-le via XML. Pas besoin de tutoriels, cela va de soi, connectez tous les droits et les droits!

0
RJFares

ce qui a causé le problème pour moi- J'ai dupliqué une de mes vues dans ma mise en page (pour accélérer les choses - ou du moins je le pensais) . en agissant de la sorte - j'ai causé le problème - plusieurs vues avaient le même Android: id value . qui est un grand non-non.

une valeur unique à tout mon avis (en changer le Android: id ) a aidé à résoudre ce problème

0
Dror

J'ai résolu ce problème en créant la chaîne en mode Plan. Le tutoriel ne dit jamais que vous devez y revenir, mais si vous le faites, vous pouvez créer la chaîne.

0
qacwnfq q