J'ai mis à jour Android Studio 2.3, puis j'obtiens ConstrainLayout
par défaut en tant que modèle xml.
Mais en cela, j'ai RelativeLayout
en tant que disposition enfant et je reçois un avertissement suivant.
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, et il enregistre la position actuelle avec des attributs de conception (tels que tels que layout_editor_absoluteX.) Ces attributs ne sont pas appliqués à runtime, donc si vous poussez votre mise en page sur un périphérique, les widgets peuvent apparaissent 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 de glisser des connexions Edge.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools">
<Android.support.constraint.ConstraintLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.pratikbutani.demoapp.MainActivity"
tools:showIn="@layout/activity_main">
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/content_main"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:showIn="@layout/activity_main"
tools:layout_editor_absoluteY="8dp"
tools:layout_editor_absoluteX="8dp">
<Android.support.v7.widget.RecyclerView
Android:id="@+id/my_recycler_view"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true" />
</RelativeLayout>
</Android.support.constraint.ConstraintLayout>
</layout>
Mise en garde sur RelativeLayout
, que dois-je faire?
Comme dans l'image ci-dessus, vous établissez une connexion.En contrainte, nous pouvons placer des widgets n'importe où, mais en s'exécutant sur une application, les widgets ne se trouvent pas au même endroit que lors du développement dans le studio Android. contraintes en faisant glisser les connexions Edge. Widgets a rond comme des choses dans chaque côté, faites-le glisser pour régler sa position.
Ce problème est survenu parce que vous avez utilisé et que votre vue n'a aucune contrainte
tools:layout_editor_absoluteY="8dp"
tools:layout_editor_absoluteX="8dp"
Cela n’a qu’effet (l’effet ici, c’est votre vue qui laissera une marge gauche de 8dp et une marge supérieure de 8dp) au moment du design (dans Preview of Android Studio), elle n’aura aucun effet au moment de l’exécution
Pour résoudre cet avertissement, vous devez ajouter suffisamment de contrainte pour votre mise en page ou supprimer simplement tools:layout_editor_absoluteY="8dp"
et tools:layout_editor_absoluteX="8dp"
.
cet avertissement s’est produit lorsque votre présentation ou votre widget n’a pas de code de contrainte mais que la vue Android a besoin.Par exemple, lorsque vous utilisez Android: layout_marginTop = "12dp", vous devez ajouter app: layout_constraintTop_toTopOf = "", sinon l’avertissement apparaît.