Layout Linier

LinearLayout adalah sekelompok tampilan yang menyejajarkan semua anak dalam satu arah, secara vertikal atau horizontal. Anda bisa menetapkan arah layout dengan atribut android:orientation.

Catatan: Untuk kinerja dan dukungan fitur yang lebih baik, Anda harus membuat layout dengan ConstraintLayout.

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

Bobot Layout

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

Distribusi setara

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

Distribusi tidak setara

Anda juga dapat membuat layout linier tempat elemen anak 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 bertambah. Sebagai gantinya, kolom teks ketiga ini hanya akan menempati area yang diperlukan oleh kontennya. Di samping itu, 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 setengah jumlah ruang yang tersisa, sedangkan dua yang pertama akan berbagi sisanya secara seimbang.

Cuplikan kode berikut menampilkan bagaimana bobot layout dapat berfungsi pada aktivitas "kirim pesan". Untuk kolom, 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 anak LinearLayout, lihat LinearLayout.LayoutParams.