2017-04-12 5 views
4

Ich bin Anfänger mit Android Studio und ich versuche vertikal Inhalt von ConstraintLayout zu zentrieren, aber ohne Erfolg. Ich habe versucht, android:gravity="center" zu verwenden, und ich entfernte die aller Elemente, aber nicht passiert ... Also, wie kann ich das zentralisieren?Wie zentrieren Sie den ConstraintLayout-Inhalt in Android Studio vertikal?

<?xml version="1.0" encoding="utf-8"?> 
<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:background="@layout/gradient" 
    android:gravity="center" 
    tools:context="com.test.test.MainActivity" 
    tools:layout_editor_absoluteY="81dp" 
    tools:layout_editor_absoluteX="0dp"> 

    <EditText 
     android:id="@+id/txtEmail" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:ems="10" 
     android:hint="@string/lblEmail" 
     android:inputType="textEmailAddress" 
     android:textColorHint="@color/colorGray" 
     android:background="@color/colorWhite" 
     android:padding="15dp" /> 

    <EditText 
     android:id="@+id/txtSenha" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginTop="8dp" 
     android:ems="10" 
     android:hint="@string/lblSenha" 
     android:inputType="textPassword" 
     android:textColorHint="@color/colorGray" 
     android:background="@color/colorWhite" 
     android:padding="15dp" 
     app:layout_constraintTop_toBottomOf="@+id/txtEmail" /> 

    <Button 
     android:id="@+id/btnEntrar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:text="@string/lblEntrar" 
     app:layout_constraintTop_toBottomOf="@+id/txtSenha" /> 

</android.support.constraint.ConstraintLayout> 
+1

nur klar machen Sie die Elemente innerhalb des Constraint-Layout oder die Einschränkung Layout selbst zentrieren möchten? – Juanca

+0

@Juanca Ich möchte die Elemente im Inneren zentrieren, sie sind derzeit an der Spitze: / – Igor

Antwort

8

ConstraintLayout ist ziemlich flexibel in den Arrangements können Sie machen, aber aus Ihrer Beschreibung Ich denke, eine „Packed Kette“ passen würde, was für Sie fragen.

Eine "Kette" bedeutet, dass alle Ansichten in einer Linie in beide Richtungen zusammenhängen, so dass die obere Ansicht auf die nächste Ansicht beschränkt ist und die nächste Ansicht auf die obere Ansicht und so weiter beschränkt Kette. Sie haben dann einige Möglichkeiten, wie sich die Kette verhält. Also in Ihrem Beispiel (Extramaterial der Einfachheit halber entfernt):

<android.support.constraint.ConstraintLayout 
.... 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

    <EditText 
     android:id="@+id/txtEmail" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     ... 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintBottom_toTopOf="@+id/txtSenha" 
     app:layout_constraintVertical_chainStyle="packed" /> 

    <EditText 
     android:id="@+id/txtSenha" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     ... 
     app:layout_constraintTop_toBottomOf="@+id/txtEmail" 
     app:layout_constraintBottom_toTopOf="@+id/btnEntrar"/> 

    <Button 
     android:id="@+id/btnEntrar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     ... 
     app:layout_constraintTop_toBottomOf="@+id/txtSenha" 
     app:layout_constraintBottom_toBottomOf="parent"/> 

</android.support.constraint.ConstraintLayout> 

In einer Kette, die Ansicht von oben (oder für horizontale Ketten links) ist der „Kopf“, wo Sie das Verhalten der Kette ändern können, in dieser Fall der chainStyle ist packed, was bedeutet, dass die Ansichten alle zusammen passen. Standardmäßig werden sie in der Mitte des Bildschirms gepackt, aber Sie können dies ändern, indem Sie die Attribute in der "Kopf" -Ansicht ändern, zB würde app:layout_constraintVertical_bias="0.9" sie stattdessen 90% des Weges auf den Bildschirm setzen.

More about chains (including diagrams) in the ConstraintLayout guidance here.

Verwandte Themen