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
.