Tata Letak Linier

LinearLayout adalah kelompok tampilan yang menyejajarkan semua turunan dalam satu arah, baik vertikal maupun horizontal. Anda bisa menetapkan arah tata letak dengan atribut android:orientation.

Catatan: Agar dukungan alat dan performa lebih baik, Anda harus mem-build tata letak dengan ConstraintLayout.

Semua turunan LinearLayout akan ditumpuk satu sama lain, sehingga daftar vertikal hanya akan memiliki satu turunan per baris, berapa pun lebarnya, dan daftar horizontal hanya akan setinggi satu baris (tinggi turunan yang tertinggi, ditambah pengisi). LinearLayout mematuhi margin antara turunan dan gravitasi (sejajar kanan, tengah, atau kiri) setiap turunan.

Bobot Tata Letak

LinearLayout juga mendukung penetapan bobot ke masing-masing turunan dengan atribut android:layout_weight. Atribut ini menetapkan nilai "nilai penting" ke tampilan terkait seberapa banyak ruang yang akan ditempatinya di layar. Nilai bobot yang lebih besar memungkinkannya diperluas untuk mengisi ruang yang tersisa di tampilan induk. Tampilan turunan bisa menetapkan nilai bobot, kemudian ruang yang tersisa dalam kelompok tampilan diberikan ke turunan dalam proporsi bobot yang dideklarasikan untuk mereka. Bobot default adalah nol.

Distribusi setara

Untuk membuat tata letak linier tempat setiap turunan menggunakan jumlah ruang yang sama di layar, setel android:layout_height setiap tampilan ke "0dp" (untuk tata letak vertikal) atau android:layout_width setiap tampilan ke "0dp" (untuk tata letak horizontal). Kemudian setel android:layout_weight setiap tampilan ke "1".

Distribusi tidak setara

Anda juga dapat membuat tata letak linier tempat elemen turunan menggunakan jumlah ruang yang berbeda di layar:

  • Jika ada tiga kolom teks dan dua di antaranya mendeklarasikan bobot 1, sementara yang lain tidak diberikan bobot, kolom teks ketiga yang tanpa bobot tidak akan berkembang. Sebagai gantinya, kolom teks ketiga ini hanya akan menempati area yang diperlukan oleh kontennya. Di sisi lain, dua kolom lainnya akan diperluas secara seimbang untuk mengisi ruang yang tersisa setelah ketiga kolom diukur.
  • Jika ada tiga kolom teks dan dua di antaranya mendeklarasikan bobot 1, sementara kolom ketiga diberikan bobot 2 (sebagai ganti 0), maka kolom ketiga kini dideklarasikan lebih penting daripada kedua kolom lainnya, jadi kolom tersebut mendapatkan separuh jumlah ruang yang tersisa, sedangkan dua yang pertama akan berbagi sisanya secara seimbang.

Cuplikan kode berikut menunjukkan cara kerja bobot tata letak dalam aktivitas "kirim pesan". Kolom Kepada, baris Subjek, dan tombol Kirim masing-masing hanya mengambil ketinggian yang diperlukan. Konfigurasi ini memungkinkan pesan itu sendiri untuk mengambil sisa dari ketinggian aktivitas.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical" >
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/to" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/subject" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="top"
        android:hint="@string/message" />
    <Button
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="@string/send" />
</LinearLayout>

Untuk detail mengenai atribut yang tersedia pada setiap tampilan turunan LinearLayout, lihat LinearLayout.LayoutParams.