Ich möchte ein Layout in die Mitte des Bildschirms setzen.
73
Ich möchte ein Layout in die Mitte des Bildschirms setzen.
Schritt 1: Wickeln Sie alles, was Sie möchten, zentriert auf den Bildschirm im Vollbildmodus RelativeLayout
.
Schritt 2: Geben Sie dieser untergeordneten Ansicht (der Ansicht, in der Sie zentriert sein möchten RelativeLayout
) das android:layout_centerInParent="true"
Attribut.
android:layout_centerInParent="true"
die untergeordnete Ansicht aktivieren, nicht dieRelativeLayout
.android:layout_*
Attribute wirken sich darauf aus, wie eine Ansicht in ihrem übergeordneten Element positioniert und dimensioniert wird, nicht darauf, wie die untergeordneten Elemente einer Ansicht in ihr positioniert und dimensioniert werden.Sie können eine Zentrierung auf jede Ansicht anwenden, einschließlich eines Layouts, indem Sie das XML-Attribut android: layout_gravity "verwenden. Sie möchten ihr wahrscheinlich den Wert" center "geben.
Eine Referenz möglicher Werte für diese Option finden Sie hier: http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html#attr_android:layout_gravity
quelle
FrameLayout
undLinearLayout
beide unterstützenandroid:layout_gravity
ihre Kinder.RelativeLayout
nicht. Es ist alles in den Dokumenten .<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> <ProgressBar android:id="@+id/ProgressBar01" android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_gravity="center" android:layout_height="wrap_content"></ProgressBar> <TextView android:layout_below="@id/ProgressBar01" android:text="@string/please_wait_authenticating" android:id="@+id/txtText" android:paddingTop="30px" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> </RelativeLayout>
quelle
Ich konnte eine Ansicht mit zentrieren
android:layout_centerHorizontal="true"
und
android:layout_centerVertical="true"
params.
quelle
RelativeLayout
.Wenn Sie eine Ansicht zentrieren möchten, verwenden Sie diese. In diesem Fall muss TextView die unterste Ansicht in Ihrem XML sein, da layout_height match_parent ist.
<TextView android:id="@+id/tv_to_be_centered" android:layout_height="match_parent" android:layout_width="match_parent" android:gravity="center" android:text="Some text" />
quelle
Layout
Widges werden zwar erweitert,ViewGroup
aberViewGroup
die Ansicht wird erweitert. SoLayout
ist einViewGroup
, undViewGroup
ist einView
android:layout_gravity
Attribut unterstützen.Aktualisierte Antwort: Einschränkungslayout
Es scheint, dass der Trend in Android jetzt darin besteht, ein Constraint-Layout zu verwenden. Obwohl es einfach genug ist, eine Ansicht mit a zu
RelativeLayout
zentrieren (wie andere Antworten gezeigt haben),ConstraintLayout
ist das leistungsfähiger als dasRelativeLayout
für komplexere Layouts. Es lohnt sich also zu lernen, wie es jetzt geht.Um eine Ansicht zu zentrieren, ziehen Sie einfach die Ziehpunkte auf alle vier Seiten des übergeordneten Elements.
quelle
Es funktioniert für diesen Code und benötigt manchmal beide Eigenschaften
android:layout_gravity="center" android:layout_centerHorizontal="true"
quelle
Fügen Sie android: layout_centerInParent = "true" zu dem Element hinzu, das Sie im RelativeLayout zentrieren möchten
quelle
Verwenden Sie ConstraintLayout. Hier ist ein Beispiel, mit dem die Ansicht entsprechend der Breite und Höhe des übergeordneten Bildschirms zentriert wird:
<?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" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="0dp" android:layout_height="0dp" android:background="#FF00FF" android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHeight_percent=".6" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintWidth_percent=".4"></LinearLayout> </android.support.constraint.ConstraintLayout>
Möglicherweise müssen Sie Ihren Gradle ändern, um die neueste Version von ConstraintLayout zu erhalten:
dependencies { ... implementation 'com.android.support.constraint:constraint-layout:1.1.3' }
quelle
Ich benutze android: layout_centerInParent = "true" und es hat funktioniert
quelle