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.