Ich möchte ein Layout in die Mitte des Bildschirms setzen.
Antworten:
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 die RelativeLayout. 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
FrameLayoutund LinearLayoutbeide unterstützen android:layout_gravityihre Kinder. RelativeLayoutnicht. 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>
Ich konnte eine Ansicht mit zentrieren
android:layout_centerHorizontal="true"
und
android:layout_centerVertical="true"
params.
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"
/>
LayoutWidges werden zwar erweitert, ViewGroupaber ViewGroupdie Ansicht wird erweitert. So Layout ist ein ViewGroup , und ViewGroup ist ein View
android:layout_gravityAttribut unterstützen.
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 RelativeLayoutzentrieren (wie andere Antworten gezeigt haben), ConstraintLayoutist das leistungsfähiger als das RelativeLayoutfü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.
Es funktioniert für diesen Code und benötigt manchmal beide Eigenschaften
android:layout_gravity="center"
android:layout_centerHorizontal="true"
Fügen Sie android: layout_centerInParent = "true" zu dem Element hinzu, das Sie im RelativeLayout zentrieren möchten
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'
}
Ich benutze android: layout_centerInParent = "true" und es hat funktioniert