Neuer Layout-Editor in Android Studio 2.2 zeigt diesen Fehler weiterhin in Ansichten wie EditText und Buttons an. Bitte helfen Sie. Auch alle Links, die bei der Integration des neuen Constraint-Layouts hilfreich sind, sind willkommen.
code:
<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout
Android:id="@+id/activity_main"
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:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context="com.set.email.MainActivity"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="81dp">
<TextView
Android:text="To:"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
tools:layout_editor_absoluteX="7dp"
tools:layout_editor_absoluteY="4dp"
Android:id="@+id/textTo"/>
<EditText
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:inputType="textEmailAddress"
Android:ems="10"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="24dp"
Android:id="@+id/editTo"
Android:textAppearance="@Android:style/TextAppearance.DeviceDefault.Medium"/>
<EditText
Android:layout_width="384dp"
Android:layout_height="42dp"
Android:inputType="textPersonName"
Android:ems="10"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="94dp"
Android:id="@+id/editSubject"
Android:textAppearance="@Android:style/TextAppearance.DeviceDefault.Medium"/>
<EditText
Android:layout_width="384dp"
Android:layout_height="273dp"
Android:inputType="textPersonName"
Android:ems="10"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="179dp"
Android:id="@+id/editMessage"
app:layout_constraintLeft_toLeftOf="@+id/activity_main"
tools:layout_constraintLeft_creator="50"
Android:textAppearance="@Android:style/TextAppearance.DeviceDefault.Medium"/>
<Button
Android:text="Send"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
tools:layout_editor_absoluteX="140dp"
tools:layout_editor_absoluteY="454dp"
Android:id="@+id/btnSend"
app:layout_constraintLeft_toLeftOf="@+id/editMessage"
tools:layout_constraintLeft_creator="0"
app:layout_constraintRight_toRightOf="@+id/activity_main"
Android:layout_marginEnd="16dp"
tools:layout_constraintRight_creator="0"
Android:textAppearance="@Android:style/TextAppearance.DeviceDefault.Medium"/>
</Android.support.constraint.ConstraintLayout>
Das Einschränkungslayout zielt darauf ab, Layouthierarchien zu reduzieren und die Leistung von Layouts zu verbessern (technisch gesehen müssen Sie keine Änderungen für verschiedene Bildschirmgrößen vornehmen. Keine Überlappung, funktioniert wie Charme auf einem Mobiltelefon sowie auf einer Registerkarte mit denselben Einschränkungen) Wenn Sie den neuen Layout-Editor verwenden, wird der obige Fehler behoben.
Klicken Sie auf den kleinen Kreis und ziehen Sie ihn nach links, bis der Kreis grün wird, um eine linke Einschränkung hinzuzufügen (geben Sie eine Zahl an, sagen Sie x dp. Wiederholen Sie dies mit den anderen Seiten und lassen Sie die untere Einschränkung leer, wenn Sie eine andere Ansicht darunter haben .
Bearbeiten: Laut Entwicklerwebsite können Sie jeder Ansicht beim Platzieren im Layout keine Einschränkungen hinzufügen, sondern jede Ansicht an die gewünschten Positionen verschieben und dann auf Abhängigkeiten ableiten klicken, um automatisch Abhängigkeiten zu erstellen. mehr hier
Ab Android Studio v3) wurde Infer Constraint aus der Dropdown-Liste entfernt.
Verwenden Sie das Zauberstab-Symbol im Symbolleistenmenü über der Entwurfsvorschau. Es gibt die Schaltfläche " Infer Constraints ". Klicken Sie auf diese Schaltfläche, um automatisch einige Zeilen in das Textfeld einzufügen und die rote Linie zu entfernen.
Kopieren Sie diesen Code einfach in alle Komponenten, die Sie ziehen möchten.
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
beispiel:
<TextView
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
Android:text="To:"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
tools:layout_editor_absoluteX="7dp"
tools:layout_editor_absoluteY="4dp"
Android:id="@+id/textTo"/>
Gehen Sie zum Design, klicken Sie mit der rechten Maustaste auf Ihr Widget, Constraint Layout >> Infer Constraints. Sie können feststellen, dass Ihrem Text automatisch Code hinzugefügt wurde.
Follow these steps:
Right click on designing part > Constraint Layout > Infer Constraints
Wenn die Fehlermeldung "Constraints
" weiterhin angezeigt wird, verwenden Sie einfach diesen Code:
app:layout_constraintBottom_toBottomOf="parent"
Gehen Sie zum XML-Layout-Text, in dem das Widget (Schaltfläche oder andere Ansicht) einen Fehler anzeigt, fokussieren Sie den Cursor dort und drücken Sie alt+enter und wählen Sie fehlende Constraints-Attribute aus.
Sie müssen das EditText
vom Rand des Layouts und nicht nur vom anderen Widget ziehen. Sie können Einschränkungen auch hinzufügen, indem Sie einfach den Einschränkungspunkt, der das Widget umgibt, an den Rand des Bildschirms ziehen, um die angegebenen Einschränkungen hinzuzufügen.
Der geänderte Code sieht ungefähr so aus:
app:layout_constraintLeft_toLeftOf="@+id/router_text"
app:layout_constraintTop_toTopOf="@+id/activity_main"
Android:layout_marginTop="320dp"
app:layout_constraintBottom_toBottomOf="@+id/activity_main"
Android:layout_marginBottom="16dp"
app:layout_constraintVertical_bias="0.29"
zum Beispiel habe ich das
<Android.support.constraint.ConstraintLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
verwenden Sie das RelativeLayout-Layout wie folgt
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Wechseln Sie einfach in die Entwurfsansicht und suchen Sie das betreffende Widget. Nehmen Sie einen der Punkte an der Begrenzung des Widgets und verbinden Sie ihn mit einem geeigneten Rand des Bildschirms (oder mit einem Punkt auf einem anderen Widget).
Wenn es sich bei dem Widget beispielsweise um eine Symbolleiste handelt, nehmen Sie einfach den obersten Punkt und verbinden Sie ihn mit dem obersten Rand des Telefonbildschirms, wie in der Abbildung dargestellt.