Cette vue n'est pas contrainte, elle n'a que des positions au moment de la conception. Elle passe donc à (0,0) sauf si vous ajoutez des contraintes.
L'éditeur de disposition vous permet de placer des widgets n'importe où sur le canevas. Il enregistre la position actuelle avec des attributs designtime (tels que layout_editor_absoluteX). Ces attributs ne sont pas appliqués au moment de l'exécution. Par conséquent, si vous poussez votre disposition sur un périphérique, dans un emplacement différent de celui indiqué dans l'éditeur. Pour résoudre ce problème, assurez-vous qu'un widget a des contraintes horizontales et verticales en faisant glisser les connexions Edge.
Cela peut aider quelqu'un . J'utilise Android Studio 3.1 et je suis confronté au même problème mais je n'ai pas trouvé ces options (Mise en forme de contrainte -> Mise en page inférée) . Après vérification, j'ai trouvé l'option "Contrainte d'influence" au-dessus de la fenêtre de présentation (reportez-vous à la capture d'écran ci-dessous à l'étape 1)
Étape 1: Cliquez sur "Inférer la contrainte". Cela peut résoudre votre problème, mais si votre widget n'est toujours pas visible (comme dans mon cas), suivez l'étape 2 .
Étape 2: Cliquez sur "AppTheme" et sélectionnez le thème "NoTitleBar" comme sélectionné dans la capture d'écran
Cela a résolu mon problème.
Faites un clic droit sur la disposition de conception dans Android Studio, puis sélectionnez "Contraindre la disposition" et le sous-menu est ouvert, puis sélectionnez "déduire la disposition" et compilez votre application.
Astuce de studio Android dit:
Cette vue n'est pas contrainte. Il n’a que des positions de conception, il sautera donc à (0,0) au moment de l’exécution à moins d’ajouter les contraintes moins ... (Ctrl + F1) enregistre la position actuelle avec des attributs de conception (tels que layout_editor_absoluteX). Ces attributs ne sont pas appliqués au moment de l'exécution. Par conséquent, si vous appuyez sur la disposition sur un périphérique, les widgets peuvent apparaître à un emplacement différent de celui indiqué dans l'éditeur.
Pour résoudre ce problème, assurez-vous qu'un widget possède des contraintes horizontales et verticales en faisant glisser les connexions Edge.
Dans mon projet, cette erreur était due aux expressions Android:layout_width="fill_parent"
et Android:layout_height="fill_parent"
. La constante fill_parent
est obsolète. Passer à match_parent
a résolu le problème:
<ViewFlipper
Android:id="@+id/viewFlipper1"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:gravity="center">
</ViewFlipper>