Layout Relatif

Mencoba cara Compose
Jetpack Compose adalah toolkit UI yang direkomendasikan untuk Android. Pelajari cara menggunakan tata letak di Compose.

RelativeLayout adalah grup tampilan yang menampilkan tampilan turunan di posisi relatif. Posisi setiap tampilan dapat ditentukan sebagai posisi relatif terhadap elemen yang setara (seperti di sebelah kiri atau di bawah tampilan lain) atau di posisi relatif terhadap RelativeLayout induk (seperti sejajar dengan bagian bawah, kiri, atau tengah).

Catatan: Untuk mendapatkan dukungan performa dan fitur yang lebih baik, sebaiknya buat tata letak dengan ConstraintLayout.

RelativeLayout adalah utilitas yang sangat efektif untuk mendesain antarmuka pengguna karena dapat menghilangkan grup tampilan bertingkat dan menjaga hierarki tata letak Anda tetap sederhana, sehingga meningkatkan performa. Jika ternyata Anda menggunakan beberapa grup LinearLayout bertingkat, Anda dapat menggantinya dengan RelativeLayout tunggal.

Memosisikan Tampilan

RelativeLayout memungkinkan tampilan turunan menentukan posisinya relatif terhadap tampilan induk atau terhadap sesama tampilan turunan (ditentukan menurut ID). Jadi, Anda dapat menyejajarkan dua elemen berdasarkan batas kanan, atau memosisikannya satu di bawah yang lain, di tengah-tengah layar, di tengah kiri, dan seterusnya. Secara default, semua tampilan turunan digambar di kiri atas tata letak, sehingga Anda harus menentukan posisi setiap tampilan menggunakan berbagai properti tata letak yang tersedia dari RelativeLayout.LayoutParams.

Beberapa properti tata letak yang tersedia untuk tampilan dalam RelativeLayout meliputi:

android:layout_alignParentTop
Jika "true", tepi atas tampilan ini diposisikan sejajar dengan tepi atas tampilan induknya.
android:layout_centerVertical
Jika "true", tampilan turunan ini diposisikan di tengah-tengah turunan induknya secara vertikal.
android:layout_below
Memosisikan tepi atas tampilan ini di bawah tampilan yang ditentukan dengan ID resource.
android:layout_toRightOf
Memosisikan tepi kiri tampilan ini di sebelah kanan tampilan yang ditentukan dengan ID resource.

Ini hanya beberapa contoh. Semua atribut tata letak didokumentasikan di RelativeLayout.LayoutParams.

Nilai untuk setiap properti tata letak adalah boolean untuk mengaktifkan posisi tata letak relatif terhadap RelativeLayout induk, atau ID yang mereferensikan tampilan lain dalam tata letak yang digunakan sebagai acuan untuk memosisikan tampilan.

Dalam tata letak XML Anda, dependensi terhadap tampilan lain dalam tata letak ini dapat dideklarasikan dalam urutan apa pun. Misalnya, Anda dapat mendeklarasikan bahwa "view1" diposisikan di bawah "view2" meskipun "view2" merupakan tampilan terakhir yang dideklarasikan dalam hierarki. Contoh di bawah ini menunjukkan skenario seperti itu.

Contoh

Setiap atribut yang mengontrol posisi relatif setiap tampilan akan ditekankan.

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

Untuk detail tentang semua atribut tata letak yang tersedia untuk setiap tampilan turunan RelativeLayout, lihat RelativeLayout.LayoutParams.