Ich verwende ConstraintLayout
in meiner Anwendung, um das Anwendungslayout zu erstellen. Ich versuche, einen Bildschirm zu erstellen, auf dem einer angezeigt wird, EditText
und Button
sollte in der Mitte und Button
unter EditText
einem Rand mit nur 16 dp liegen.
Hier ist mein Layout und ein Screenshot, wie es gerade aussieht.
activity_authenticate_content.xml
<android.support.constraint.ConstraintLayout 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"
android:paddingLeft="16dp"
android:paddingRight="16dp"
tools:context="com.icici.iciciappathon.login.AuthenticationActivity">
<android.support.design.widget.TextInputLayout
android:id="@+id/client_id_input_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/login_client_id"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/authenticate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/login_auth"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@id/client_id_input_layout"
app:layout_constraintRight_toRightOf="@id/client_id_input_layout"
app:layout_constraintTop_toTopOf="@id/client_id_input_layout" />
</android.support.constraint.ConstraintLayout>
<android.support.constraint.Guideline
? Müssen wir jedes Mal verwenden, wenn wir verwendenConstraintLayout
?layout_constraintGuide_percent
?Guideline
ist nur ein unsichtbares Element, auf dem Sie Ihre Ansichten verankern können.layout_constraintGuide_percent
ist der Prozentsatz im Elternteil. Hier ist 0,5 50% HöheTextInputEditText
und einsButton
. Ich möchte sie in der Mitte des Bildschirms platzieren. Aber ab sofort ist es nicht pastebin.com/iXYtuXHg hier ist der Screenshot dropbox.com/s/k7997q2buvw76cp/q.png?dl=0LinearLayout
und zentrieren.Es gibt einen einfacheren Weg. Wenn Sie Layouteinschränkungen wie folgt festlegen und Ihr EditText eine feste Größe hat, wird er im Einschränkungslayout zentriert:
Das linke / rechte Paar zentriert die Ansicht horizontal und das obere / untere Paar zentriert sie vertikal. Dies liegt daran, dass beim Festlegen der linken, rechten oder oberen und unteren Einschränkung, die größer als die Ansicht selbst ist, die Ansicht zwischen den beiden Einschränkungen zentriert wird, dh die Abweichung wird auf 50% festgelegt. Sie können die Ansicht auch nach oben / unten oder rechts / links verschieben, indem Sie die Vorspannung selbst festlegen. Spielen Sie ein bisschen damit und Sie werden sehen, wie sich dies auf die Position der Ansichten auswirkt.
quelle
app:layout_constraintCenter_in="parent"
wäre viel besser. Aber wie immer hat Google es nicht zur Verfügung gestellt.Die Lösung mit Richtlinie funktioniert nur für diesen speziellen Fall mit einzeiligem EditText. Damit es für mehrzeiligen EditText funktioniert, sollten Sie eine "gepackte" Kette verwenden.
So sieht es aus:
Weitere Informationen zur Verwendung von Ketten finden Sie in den folgenden Beiträgen:
quelle
Sie können eine Ansicht als Prozentsatz der Bildschirmgröße zentrieren.
In diesem Beispiel werden 50% der Breite und Höhe verwendet:
Dies wurde mit ConstraintLayout Version 1.1.3 durchgeführt. Vergessen Sie nicht, es zu Ihren Abhängigkeiten im Gradle hinzuzufügen und die Version zu erhöhen, wenn es eine neue Version gibt:
quelle
Fügen Sie diese Tags in Ihrer Ansicht hinzu
Sie können im Entwurfsmodus mit der rechten Maustaste klicken und die Mitte auswählen.
quelle
Sie können layout_constraintCircle für die Mittelansicht in ConstraintLayout verwenden.
Mit ConstraintCircle to Parent und dem Radius Null können Sie Ihre Ansicht zum Mittelpunkt des übergeordneten Elements machen.
quelle