Układ względny

Wypróbuj sposób tworzenia wiadomości
Jetpack Compose to zalecany zestaw narzędzi UI na Androida. Dowiedz się, jak korzystać z układów w sekcji Utwórz

RelativeLayout to grupa widoków danych, w której wyświetlenia podrzędne są wyświetlane w położeniu względnym. Położenie każdego widoku można określić względem elementów równorzędnych (np. względem lewej lub poniżej innego widoku) lub względem nadrzędnego obszaru RelativeLayout (np. wyrównania do dołu, do lewej lub do środka).

Uwaga: aby uzyskać lepszą wydajność i obsługę narzędzi, utwórz układ za pomocą ConstraintLayout.

RelativeLayout to bardzo wszechstronne narzędzie do projektowania interfejsu, ponieważ pozwala wyeliminować zagnieżdżone grupy widoków i utrzymać płaską hierarchię układu, co zwiększa wydajność. Jeśli masz kilka zagnieżdżonych grup LinearLayout, możesz je zastąpić pojedynczym elementem typu RelativeLayout.

Pozycjonowanie

RelativeLayout umożliwia widokom podrzędnym określanie ich pozycji względem widoku nadrzędnego lub siebie (określanego za pomocą identyfikatora). Możesz więc wyrównać dwa elementy względem prawego obramowania lub ustawić jeden pod drugim, wyśrodkować na ekranie, wyśrodkować do lewej itd. Domyślnie wszystkie widoki podrzędne są rysowane w lewym górnym rogu układu, dlatego musisz określić jego pozycję, korzystając z różnych właściwości układu dostępnych w RelativeLayout.LayoutParams.

Niektóre z wielu właściwości układu dostępnych w widokach RelativeLayout to:

android:layout_alignParentTop
Jeśli "true" powoduje, że górna krawędź tego widoku jest zgodna z górną krawędzią obiektu nadrzędnego.
android:layout_centerVertical
Jeśli "true" określa element podrzędny w pionie, wyśrodkowuje go w pionie.
android:layout_below
Umieszcza górną krawędź tego widoku poniżej widoku określonego za pomocą identyfikatora zasobu.
android:layout_toRightOf
Umieszcza lewą krawędź tego widoku na prawo od widoku określonego za pomocą identyfikatora zasobu.

To tylko kilka przykładów. Wszystkie atrybuty układu są opisane na RelativeLayout.LayoutParams.

Wartość każdej właściwości układu jest wartością logiczną umożliwiającą określenie pozycji układu w odniesieniu do nadrzędnego elementu RelativeLayout lub identyfikatorem odwołującym się do innego widoku w układzie, względem którego powinien być określony widok.

W układzie XML zależności od innych widoków w układzie można zadeklarować w dowolnej kolejności. Możesz na przykład zadeklarować, że widok „view1” znajduje się poniżej elementu „view2”, nawet jeśli „widok2” jest ostatnim widokiem zadeklarowanym w hierarchii. Przykład poniżej pokazuje taki scenariusz.

Przykład

Każdy z atrybutów, które kontrolują względne położenie każdego widoku, jest wyróżniony.

<?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>

Szczegółowe informacje o wszystkich atrybutach układu dostępnych w przypadku poszczególnych widoków podrzędnych elementu RelativeLayout znajdziesz w sekcji RelativeLayout.LayoutParams.