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>
sumber : https://developer.android.com