web-dev-qa-db-fra.com

Vue de contrainte de mise en page dans le coin supérieur gauche

Chaque fois que je crée des vues comme Button et TextView dans ConstraintLayout, elles se bloquent toutes dans le coin supérieur au lieu de les placer.

J'ai essayé de créer de nouvelles activités et de changer d'émulateur, mais le résultat est toujours le même.

Ceci est une capture d'écran de ce qui se passe:

enter image description here

Quel peut être le problème?

27
hassanito hajj

Comme indiqué dans guides de mise en forme de contraintes :

Si une vue ne comporte aucune contrainte lorsque vous exécutez votre présentation sur un périphérique, elle est dessinée à la position [0,0] (le coin supérieur gauche).

Vous devez ajouter au moins une contrainte horizontale et une contrainte verticale pour la vue.

Je suppose que vous n'avez appliqué aucune contrainte.

Vous pouvez soit appliquer manuellement des contraintes à la vue, soit laisser l’éditeur de structure le faire pour vous en utilisant le bouton "Inférer les contraintes" :

enter image description here

31
azizbekian

Lorsque vous déposez une vue dans l'éditeur de mise en page, elle reste là où vous la laissez, même si elle n'a pas de contrainte ... ceci uniquement pour faciliter l'édition

En d'autres termes, la vue "restera où vous la laissez" jusqu'à ce que vous ajoutiez des contraintes.

La raison pour laquelle il semble différent dans l'aperçu par rapport à votre application est que tout ce qui se trouve dans votre XML avec tools: est va être supprimé du code lorsque votre application s'exécute . Ces options ne concernent que l'éditeur de mise en page Studio Android Studio), ce qui n'est pas représentatif de ce à quoi vous devez vous attendre lors de l'exécution du code.

Et cela peut être gênant pour les débutants car

une contrainte manquante ne causera pas d'erreur de compilation

Cependant

l'éditeur de mise en page indique les contraintes manquantes sous forme d'erreur dans la barre d'outils. Pour afficher les erreurs et autres avertissements, cliquez sur Afficher les avertissements et les erreurs (bouton rouge avec numéro). Pour vous aider à éviter les contraintes manquantes, l'éditeur de mise en page peut ajouter automatiquement des contraintes avec les fonctionnalités Connexion automatique et déductions de contraintes

Plus de détails

5
cricket_007

Un moyen simple et rapide de résoudre ce problème consiste à cliquer sur le composant (TextView, ImageView, etc.), puis sur le bouton de déduction de contraintes. Cela ressemble à 2 signes plus jaune.

déduire des contraintes image

infer constraints image

3
I.A. Washburn

ajoutez ceci en xml au bouton, etc.

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.57"

alors jouez avec dans la conception.

Bonne chance! :)

1
moshiah_now

Fondamentalement, ce type de problème se produit lorsque vous utilisez ConstraintLayout .

  • Alors, allez à Aperçu à partir de Android Studio.

  • Sélectionnez le bouton que vous souhaitez définir à la position spécifique.

  • Enfin, il suffit de cliquer sur le bouton déduire contraint comme je le mentionne dans l'image ci-dessous sur un cercle rouge.

https://i.imgur.com/sDu1ghP.jpg

C'est tout le projet et voir la magie

Merci