Relatives Layout

Compose ausprobieren
Jetpack Compose ist das empfohlene UI-Toolkit für Android. Informationen zur Arbeit mit Layouts in Compose

RelativeLayout ist eine Ansichtsgruppe, in der untergeordnete Ansichten in relativen Positionen angezeigt werden. Die Position jeder Ansicht kann relativ zu gleichgeordneten Elementen (z. B. links von oder unter einer anderen Ansicht) oder relativ zum übergeordneten RelativeLayout-Bereich (z. B. unten, links oder in der Mitte ausgerichtet) angegeben werden.

Hinweis:Für eine bessere Leistung und Tooling-Unterstützung sollten Sie Ihr Layout stattdessen mit ConstraintLayout erstellen.

Ein RelativeLayout ist ein sehr leistungsstarkes Tool zum Entwerfen einer Benutzeroberfläche, da damit verschachtelte Ansichtsgruppen vermieden und die Layoutstruktur flach gehalten werden kann, was die Leistung verbessert. Wenn Sie mehrere verschachtelte LinearLayout-Gruppen verwenden, können Sie diese möglicherweise durch eine einzelne RelativeLayout ersetzen.

Ansichten positionieren

Mit RelativeLayout können untergeordnete Ansichten ihre Position relativ zur übergeordneten Ansicht oder zueinander (angegeben durch ID) festlegen. Sie können also zwei Elemente am rechten Rand ausrichten oder eines unter dem anderen zentriert auf dem Bildschirm oder links zentriert usw. platzieren. Standardmäßig werden alle untergeordneten Ansichten oben links im Layout gezeichnet. Sie müssen also die Position jeder Ansicht mit den verschiedenen Layout-Properties definieren, die über RelativeLayout.LayoutParams verfügbar sind.

Hier einige der vielen Layoutattribute, die für Ansichten in einem RelativeLayout verfügbar sind:

android:layout_alignParentTop
Wenn "true", wird der obere Rand dieser Ansicht an den oberen Rand des übergeordneten Elements angepasst.
android:layout_centerVertical
Wenn "true", wird dieses untergeordnete Element vertikal im übergeordneten Element zentriert.
android:layout_below
Positioniert den oberen Rand dieser Ansicht unter der Ansicht, die mit einer Ressourcen-ID angegeben wird.
android:layout_toRightOf
Positioniert den linken Rand dieser Ansicht rechts neben der Ansicht, die mit einer Ressourcen-ID angegeben wird.

Dies sind nur ein paar Beispiele. Alle Layoutattribute sind unter RelativeLayout.LayoutParams dokumentiert.

Der Wert für jede Layouteigenschaft ist entweder ein boolescher Wert, um eine Layoutposition relativ zum übergeordneten RelativeLayout zu aktivieren, oder eine ID, die auf eine andere Ansicht im Layout verweist, an der die Ansicht positioniert werden soll.

In Ihrem XML-Layout können Abhängigkeiten von anderen Ansichten im Layout in beliebiger Reihenfolge deklariert werden. Sie können beispielsweise festlegen, dass „view1“ unter „view2“ positioniert werden soll, auch wenn „view2“ die letzte in der Hierarchie deklarierte Ansicht ist. Das folgende Beispiel veranschaulicht ein solches Szenario.

Beispiel

Jedes der Attribute, mit denen die relative Position der einzelnen Ansichten gesteuert wird, ist hervorgehoben.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp" >
    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/reminder" />
    <Spinner
        android:id="@+id/dates"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/times" />
    <Spinner
        android:id="@id/times"
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
        android:layout_alignParentRight="true" />
    <Button
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/times"
        android:layout_alignParentRight="true"
        android:text="@string/done" />
</RelativeLayout>

Details zu allen Layoutattributen, die für jede Kinderansicht eines RelativeLayout verfügbar sind, finden Sie unter RelativeLayout.LayoutParams.