Układ względny

Wypróbuj Compose
Jetpack Compose to zalecany zestaw narzędzi do tworzenia interfejsu użytkownika na Androidzie. Dowiedz się, jak pracować z układami w Compose.

RelativeLayout to grupa widoków, która wyświetla widoki podrzędne w pozycjach względnych. Pozycję każdego widoku można określić jako względną względem elementów równorzędnych (np. po lewej stronie lub poniżej innego widoku) albo w pozycjach względnych względem obszaru nadrzędnego RelativeLayout (np. wyrównanych do dołu, lewej strony lub środka).

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

RelativeLayout to bardzo przydatne narzędzie do projektowania interfejsu użytkownika, ponieważ pozwala wyeliminować zagnieżdżone grupy widoków i zachować płaską hierarchię układu, co poprawia wydajność. Jeśli używasz kilku zagnieżdżonych grup LinearLayout, możesz je zastąpić jedną grupą RelativeLayout.

Pozycjonowanie widoków

RelativeLayout umożliwia widokom dziecka określanie ich pozycji względem widoku rodzica lub względem siebie (określonej za pomocą identyfikatora). Możesz więc wyrównać 2 elementy według prawej krawędzi lub umieścić jeden pod drugim, wyśrodkować na ekranie, wyśrodkować po lewej stronie itp. Domyślnie wszystkie widoki podrzędne są rysowane w lewym górnym rogu układu, dlatego musisz zdefiniować pozycję każdego widoku za pomocą różnych właściwości układu dostępnych w RelativeLayout.LayoutParams.

Oto niektóre z wielu właściwości układu dostępnych dla widoków w RelativeLayout:

android:layout_alignParentTop
Jeśli ustawisz wartość "true", górna krawędź tego widoku będzie pasować do górnej krawędzi elementu nadrzędnego.
android:layout_centerVertical
Jeśli ustawisz wartość "true", ten element podrzędny zostanie wyśrodkowany w pionie w elemencie nadrzędnym.
android:layout_below
Ustawia górną krawędź tego widoku poniżej widoku określonego za pomocą identyfikatora zasobu.
android:layout_toRightOf
Ustawia lewą krawędź tego widoku po prawej stronie widoku określonego za pomocą identyfikatora zasobu.

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

Wartość każdej właściwości układu to wartość logiczna, która umożliwia pozycjonowanie układu względem elementu nadrzędnego RelativeLayout, lub identyfikator, który odwołuje się do innego widoku w układzie, względem którego należy ustawić widok.

W układzie XML zależności od innych widoków w układzie można deklarować w dowolnej kolejności. Możesz na przykład zadeklarować, że „view1” ma być umieszczony poniżej „view2”, nawet jeśli „view2” jest ostatnim widokiem zadeklarowanym w hierarchii. Poniższy przykład 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>

Więcej informacji o wszystkich atrybutach układu dostępnych dla każdego widoku podrzędnego RelativeLayout znajdziesz w RelativeLayout.LayoutParams.