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
.