Cette vue n'est pas contrainte

95

J'obtiens l'erreur suivante et j'utilise Android Studio 2.2 Preview 3. J'ai cherché sur Google mais je n'ai trouvé aucune ressource.

Error: This view is not constrained, it only has design time positions, so it will jump to (0,0) unless you add constraints

entrez la description de l'image ici

<TextView
        android:layout_width="384dp"
        android:layout_height="207dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/calc_default_display"
        android:id="@+id/textView"
        android:background="#ffffff"
        android:layout_margin="0dp"
        android:gravity="bottom|end"
        android:textSize="70sp"
        android:nestedScrollingEnabled="false"
        android:maxLines="2"
        android:maxLength="17"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="0dp" />
Isuru
la source

Réponses:

152

Pour résoudre rapidement ce problème, utilisez ce raccourci très utile dans Android Studio:

Cliquez avec le bouton droit sur le widget en question> Disposition des contraintes> Inférer des contraintes:

entrez la description de l'image ici

Par la suite, vous pouvez modifier les contraintes comme décrit ici: https://stackoverflow.com/a/37960888/5556250

Mettre à jour

Ce n'est pas correct pour Android Studio v3 et versions ultérieures. Selon le commentaire de @ purpleladydragons :

"Mise en page des contraintes" n'est pas dans le menu déroulant. Utilisez l'icône de la baguette magique dans le menu de la barre d'outils au-dessus de l'aperçu du design; il y a le bouton "Infer Constraints".

Jay Souper
la source
2
Merci beaucoup pour votre solution, je suis un débutant absolu, je n'avais aucune idée de ce qui n'allait pas avec la position du widget
Atul Chavan
2
Excellente solution même si je souhaite qu'Android Studio stocke simplement les positions dès le départ, au lieu des positions d'exécution. Une meilleure question est de savoir pourquoi Google pense que c'est une bonne idée de stocker la position uniquement pendant l'exécution? C'est une étape inutile pour faire cliquer les développeurs pour déduire leur position.
Antony
Merci beaucoup! Très utile
Paul
23
J'utilise Android Studio 3.0 - "Mise en page des contraintes" n'était pas dans le menu déroulant lorsque j'ai cliqué avec le bouton droit sur un widget. J'ai réalisé qu'il y avait une icône qui ressemblait à une baguette magique dans le menu de la barre d'outils au-dessus de l'aperçu du design, c'est aussi un bouton "Infer Constraints".
purpleladydragons
la solution n'a pas pu être trouvée dans Android Studio Version 3 ou plus
Mohammad Heydari
74

Solution

Cliquez simplement dessus et cela sera résolu

Cem U
la source
Je ne vois pas cette barre d'outils avec ce bouton. Comment le trouver?
i_am_david
Je ne sais pas si vous utilisez une version différente d'Android Studio. Veuillez cocher ce bouton, il devrait être quelque part là-bas. Si vous ne trouvez pas, il existe d'autres solutions
Cem U
12

Vous devez donner une valeur aux contraintes manuellement lors de l'utilisation du nouvel éditeur de mise en page ou les contraintes manquantes peuvent être ajoutées automatiquement en cliquant sur le bouton de la baguette magique dans le menu de la barre d'outils de l'aperçu de conception.

onexf
la source
11

vous pouvez essayer ceci: 1. assurez-vous d'avoir ajouté: compilez 'com.android.support:design:25.3.1' (peut-être devriez-vous aussi ajouter compile 'com.android.support.constraint: constraint-layout: 1.0.2' ) 2.entrez la description de l'image ici

3. cliquez sur Infer Constraints , j'espère que cela pourra vous aider.

BertKing
la source
7

Très bien, je sais que cette réponse est ancienne, mais j'ai découvert comment faire cela pour la version 3.1.4. Donc, pour moi, cette erreur se produit chaque fois que je place un nouvel élément dans la hiérarchie, donc je savais que j'avais besoin d'une solution. Après avoir bricolé un peu, j'ai trouvé comment le faire en suivant ces étapes:

  1. Cliquez avec le bouton droit sur l'objet et allez au centre.

Étape 1

  1. Sélectionnez ensuite horizontalement.

Étape 2

  1. Répétez ces étapes, sauf cliquez sur verticalement au lieu de horizontalement.

À condition que cette méthode fonctionne toujours, après la deuxième étape, vous devriez voir des lignes ondulées traversant horizontalement l'endroit où se trouve l'élément, et après la troisième étape, à la fois horizontalement et verticalement. Après la troisième étape, l'erreur disparaîtra!

tdog
la source
6

Cliquez avec le bouton droit de la souris sur la pièce de conception de ce composant dans laquelle vous avez obtenu une erreur et procédez comme suit:

  • [par ex. si une erreur se produit en texte brut]

[1]

Disposition des contraintes de texte brut> Inférer des contraintes:

enfin l'erreur est partie

Satyam Mishra
la source
6

Faites un clic droit sur le widget et choisissez "centre" -> "horizontalement". Puis choisissez "centre" -> "verticalement".

Taimoor Hassan
la source
6

À partir d'Android Studio v3 et versions ultérieures, Infer Constraint a été supprimé de la liste déroulante.

Utilisez l' icône de la baguette magique dans le menu de la barre d'outils au-dessus de l'aperçu du design; il y a le bouton " Infer Constraints ". Cliquez sur ce bouton, cela ajoutera automatiquement quelques lignes dans le champ de texte et la ligne rouge sera supprimée.

entrez la description de l'image ici

Vinoth
la source
4

Il vous suffit de faire un clic droit sur le widget et de choisir "centre" -> "horizontalement" et de recommencer puis de choisir -> "verticalement" Cela a fonctionné pour moi ...

Ekane 3
la source
0

vous pouvez aller à la XML filepuis concentrer le curseur de votre souris sur votre bouton, vue de texte ou tout ce que vous choisissez pour votre mise en page, puis appuyez sur Alt + Enterpour le corriger, après cela l'erreur sera partie. Cela fonctionne pour moi.

Mohammad Heydari
la source
0

Après avoir cliqué sur l'icône de la baguette magique pour déduire des contraintes:

1) Dans la fenêtre Projets, allez dans Gradle Scripts> build.gradle (Module: app)

2) Faites défiler les dépendances

3) Recherchez l'implémentation 'com.android.support:appcompat-v7:28.0.0-beta03'

4) Changez cette ligne en implémentation 'com.android.support:appcompat-v7:28.0.0-alpha1'

5) Une bannière devrait apparaître en haut de la fenêtre, cliquez sur Synchroniser maintenant dans le coin droit.

Cela fonctionne pour Android Studio v3.1 cliquez pour l'image d'édition dans le fichier build.gradle

programmeur pablo.
la source
0

Lors de la création d'une mise en page, il est plus facile de travailler avec un contrôle à la fois, au lieu de les ajouter tous en même temps.

À partir de la palette de mises en page, faites glisser un ConstraintLayout sur l'écran.

Déplacez les contrôles souhaités dans le ConstraintLayout.

Ainsi, le ConstraintLayout sera désormais les parents du contrôle, et si vous basculez vers le code xml, les contrôles seront imbriqués sous le ConstraintLayout.

Cliquez avec le bouton droit sur votre contrôle, sélectionnez Contrainte dans le menu et sélectionnez la façon dont vous souhaitez l'aligner sur le ConstraintLayout parent, top, start, etc.

Si vous devez aligner deux contrôles l'un par rapport à l'autre, sélectionnez les deux contrôles en même temps avec la touche Ctrl, puis cliquez avec le bouton droit pour ouvrir le menu de contraintes.

Plus d'informations: https://developer.android.com/training/constraint-layout

entrez la description de l'image ici

entrez la description de l'image ici Vous pouvez spécifier la distance de séparation des contraintes dans l'onglet Disposition des contraintes:

entrez la description de l'image ici

l'amour en direct
la source