Tampilan layar penuh memungkinkan aplikasi Anda menggambar UI-nya di belakang kolom sistem—status bar, kolom teks, dan menu navigasi—untuk memberikan pengalaman pengguna yang lebih imersif. Jika Anda menargetkan perangkat yang menjalankan Android 15 (level API 35) atau yang lebih tinggi, tampilan layar penuh akan diterapkan secara default.
Untuk menampilkan konten dengan benar dalam layar penuh di semua versi Android, ikuti langkah-langkah penyiapan berikut. Tanpa langkah-langkah ini, aplikasi Anda mungkin menggambar warna solid di belakang kolom sistem atau tidak menganimasikan kontennya secara sinkron dengan transisi keyboard di layar (IME).
1. Aktifkan layar penuh
Untuk mengaktifkan layar penuh di versi Android sebelumnya, panggil
enableEdgeToEdge() dalam metode Activity.onCreate() Anda:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
...
}
Secara default, enableEdgeToEdge() membuat kolom sistem transparan, kecuali dalam mode navigasi 3 tombol, yang menerapkan scrim transparan ke menu navigasi untuk kontras yang lebih baik. Warna ikon sistem dan scrim beradaptasi dengan tema terang atau gelap sistem.
2. Mengonfigurasi windowSoftInputMode
Tetapkan android:windowSoftInputMode="adjustResize" di entri
AndroidManifest.xml Aktivitas Anda. Setelan ini memungkinkan aplikasi Anda menerima inset IME,
sehingga Anda dapat menyesuaikan tata letak dengan padding saat keyboard virtual
muncul atau menghilang.
<!-- In your AndroidManifest.xml file: -->
<activity
android:name=".ui.MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize"
android:theme="@style/Theme.MyApplication"
android:exported="true">
...
</activity>
3. Menangani tumpang-tindih menggunakan inset
Setelah ditampilkan di layar penuh diaktifkan, beberapa konten dan elemen UI aplikasi Anda mungkin digambar di belakang kolom sistem. Untuk mencegah elemen penting atau interaktif tertutup oleh kolom sistem atau tumpang-tindih dengan gestur sistem, Anda harus menangani inset.
Inset menjelaskan bagian layar yang berpotongan dengan UI sistem atau gestur sistem. Jenis utama inset yang perlu dipertimbangkan untuk tampilan layar penuh adalah:
- Inset kolom sistem: Merepresentasikan area tempat kolom sistem ditampilkan. Gunakan ini untuk menghindari UI terhalang oleh kolom sistem.
- Inset potongan layar: Merepresentasikan area tempat potongan fisik (seperti notch kamera) ada di layar perangkat.
Di Compose, Anda dapat menangani inset menggunakan penggaris, pengubah padding, atau pengubah ukuran inset. Lihat Tentang inset jendela untuk panduan mendetail.
Topik lanjutan
Pertimbangkan hal berikut untuk kasus penggunaan layar penuh yang lebih canggih.
Mode imersif
Beberapa konten, seperti video atau peta, akan lebih baik jika ditampilkan dalam pengalaman yang sepenuhnya imersif dengan menyembunyikan kolom sistem. Anda dapat menyembunyikan kolom sistem menggunakan
WindowInsetsControllerCompat:
val windowInsetsController =
WindowCompat.getInsetsController(window, window.decorView)
// Hide the system bars.
windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())
// Show the system bars.
windowInsetsController.show(WindowInsetsCompat.Type.systemBars()) For example, use either `Scaffold`,
Warna dan ikon kolom sistem
Saat ditampilkan dalam layar penuh, latar belakang aplikasi Anda mungkin terlihat di belakang kolom sistem, jadi Anda mungkin perlu menyesuaikan warna ikon kolom sistem untuk mendapatkan kontras yang lebih baik.
Untuk mengubah ikon status bar menjadi terang atau gelap, gunakan WindowInsetsControllerCompat:
// Set status bar icons to dark
WindowCompat.getInsetsController(window, window.decorView)
.isAppearanceLightStatusBars = true
// Set status bar icons to light
WindowCompat.getInsetsController(window, window.decorView)
.isAppearanceLightStatusBars = false
Perlindungan kolom sistem
Meskipun enableEdgeToEdge() menyediakan kolom sistem transparan atau tembus pandang secara default, Anda mungkin perlu menyesuaikannya. Lihat Panduan desain kolom sistem Android dan Panduan desain layar penuh untuk memutuskan kapan harus menggunakan kolom transparan versus transparan sebagian.
Untuk membuat menu navigasi 3 tombol sepenuhnya transparan, bukan tembus cahaya, Anda dapat menonaktifkan penerapan kontras:
window.isNavigationBarContrastEnforced = false
Untuk mengetahui informasi selengkapnya, lihat Tentang perlindungan kolom sistem.
Dialog
Untuk menampilkan dialog layar penuh dari tepi ke tepi, panggil
WindowCompat.enableEdgeToEdge dalam metode onStart() dialog:
class MyAlertDialogFragment : DialogFragment() {
override fun onStart(){
super.onStart()
dialog?.window?.let { WindowCompat.enableEdgeToEdge(it) }
}
...
}