Jetpack Compose menyediakan beberapa penampung tata letak untuk membantu Anda menyusun dan
mengatur komponen UI. Meskipun composable tata letak dasar seperti Row dan
Column menangani pengaturan yang sederhana, banyak aplikasi memerlukan solusi penampung yang lebih responsif
dan adaptif seiring perubahan ukuran layar dan pertumbuhan data pengguna.
Penampung tata letak mencakup hal berikut:
- Daftar lazy dan petak lazy: Komponen seperti
LazyColumn,LazyRow, danLazyVerticalGridyang secara efisien menampilkan set data besar atau berukuran dinamis dengan hanya menyusun dan menata letak item yang saat ini terlihat di area pandang. - Pager: Penampung seperti
HorizontalPagerdanVerticalPageryang memungkinkan pengguna menggeser atau men-scroll antar-halaman konten. - Tata letak alur: Penampung satu dimensi yang responsif
(
FlowRowdanFlowColumn) yang otomatis menggabungkan item yang meluap ke baris atau kolom berikutnya saat ruang habis. - Petak: Struktur dua dimensi yang fleksibel yang menampilkan item dalam tata letak multi-kolom atau multi-baris yang beradaptasi dengan ukuran penampung.
- FlexBox: Penampung adaptif yang terinspirasi dari CSS Flexbox, yang memberikan kontrol terperinci atas cara item digabungkan, diperbesar, diperkecil, dan disejajarkan di sepanjang sumbu utama dan silang untuk mengisi ruang yang tersedia.
Memilih penampung tata letak yang benar
Saat membuat tata letak di Compose, memilih antara penampung tata letak dasar dan yang lebih lanjut bergantung pada desain Anda, apakah item harus digabungkan saat ruang dibatasi, dan cara item diubah ukurannya secara dinamis.
Tabel berikut merangkum kemampuan untuk setiap penampung tata letak 1D Compose:
Container |
Membungkus item ke baris baru |
Perluasan per item |
Penyusutan per item |
Ukuran awal per item |
Item bertambah untuk mengisi ruang yang tersedia di beberapa baris |
Mengurutkan ulang item |
Pemuatan lambat |
Paling cocok untuk: |
Baris / Kolom |
❌ |
✅ (via |
❌ |
❌ |
❌ |
❌ |
❌ |
|
FlowRow / FlowColumn |
✅ |
Terbatas |
❌ |
❌ |
Sebagian |
❌ |
❌ |
|
LazyRow / LazyColumn |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
|
FlexBox |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
❌ |
|
Tabel berikut merangkum kemampuan untuk Grid dan composable serupa
lainnya:
Container |
Perataan 2D ketat |
Rentang item (kolom) |
Item spanning (rows) |
Pemuatan lambat |
Paling cocok untuk: |
Petak |
✅ |
✅ (melalui |
✅ |
❌ |
|
LazyVerticalGrid |
✅ |
✅ (melalui |
❌ |
✅ |
|
LazyStaggeredGrid |
❌ (Khusus 1D) |
Sebagian (hanya rentang penuh) |
❌ |
✅ |
|
LazyHorizontalGrid |
✅ |
❌ |
✅ |
✅ |
|
Menggabungkan baris dan kolom |
❌ |
❌ |
❌ |
❌ |
|