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
FrameLayout
und LinearLayout
beide unterstützen android: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>
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"
/>
Layout
Widges werden zwar erweitert, ViewGroup
aber ViewGroup
die Ansicht wird erweitert. So Layout
ist ein ViewGroup
, und ViewGroup
ist ein View
android:layout_gravity
Attribut 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 RelativeLayout
zentrieren (wie andere Antworten gezeigt haben), ConstraintLayout
ist das leistungsfähiger als das RelativeLayout
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.
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