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.