web-dev-qa-db-fra.com

La disposition des contraintes génère une erreur dans le modèle par défaut dans Android Studio 2.3

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?

5
Pratik Butani

Allez à Conception, cliquez avec le bouton droit sur la disposition relative et sélectionnez Mise en forme de contrainte -> Inférer les contraintes  enter image description here

9
J. Shiv

Faites glisser l'objet pour le connecter aux murs ... Créez des liens entre les murs et l'objet

Regardez l'exemple d'image

 enter image description here

2
Samir Elekberov

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.

https://i.stack.imgur.com/r8L8O.png

1
tamil arasan

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".

0
Linh

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.

0
user1452641