Menyembunyikan menu navigasi

Tutorial ini menjelaskan cara menyembunyikan menu navigasi, yang diperkenalkan di Android 4.0 (API level 14).

Meskipun tutorial ini berfokus untuk menyembunyikan menu navigasi, Anda harus mendesain aplikasi untuk menyembunyikan status bar secara bersamaan, seperti dijelaskan dalam Menyembunyikan Status Bar. Menyembunyikan menu navigasi dan status (sambil tetap membuatnya mudah diakses) memungkinkan konten menggunakan seluruh ruang tampilan, sehingga memberikan pengalaman pengguna yang lebih imersif.

kolom sistem

Gambar 1. Menu navigasi.

Menyembunyikan Menu Navigasi

Anda dapat menyembunyikan menu navigasi menggunakan flag SYSTEM_UI_FLAG_HIDE_NAVIGATION. Cuplikan ini menyembunyikan menu navigasi dan status bar:

Kotlin

window.decorView.apply {
    // Hide both the navigation bar and the status bar.
    // SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
    // a general rule, you should design your app to hide the status bar whenever you
    // hide the navigation bar.
    systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN
}

Java

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);

Perhatikan hal berikut:

  • Dengan pendekatan ini, menyentuh di mana saja di layar akan menyebabkan menu navigasi (dan status bar) muncul kembali dan tetap terlihat. Interaksi pengguna menyebabkan flag dihapus.
  • Setelah flag dihapus, aplikasi perlu meresetnya jika Anda ingin menyembunyikan bar lagi. Lihat Merespons Perubahan Visibilitas UI untuk diskusi tentang cara memproses perubahan visibilitas UI sehingga aplikasi Anda dapat merespons.
  • Tempat Anda menetapkan tanda UI akan membuat perbedaan. Jika Anda menyembunyikan kolom sistem dalam metode onCreate() aktivitas dan pengguna menekan Beranda, kolom sistem akan muncul kembali. Saat pengguna membuka kembali aktivitas, onCreate() tidak akan dipanggil, sehingga kolom sistem akan tetap terlihat. Jika Anda ingin perubahan UI sistem bertahan saat pengguna masuk dan keluar dari aktivitas, tetapkan flag UI di onResume() atau onWindowFocusChanged().
  • Metode setSystemUiVisibility() hanya berpengaruh jika tampilan yang Anda panggil terlihat.
  • Keluar dari tampilan menyebabkan flag yang ditetapkan dengan setSystemUiVisibility() dihapus.

Memunculkan Konten di Belakang Menu Navigasi

Pada Android 4.1 dan yang lebih tinggi, Anda dapat menyetel konten aplikasi agar muncul di belakang menu navigasi, sehingga konten tidak mengubah ukuran saat menu navigasi disembunyikan dan ditampilkan. Untuk melakukannya, gunakan SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION. Anda mungkin juga perlu menggunakan SYSTEM_UI_FLAG_LAYOUT_STABLE untuk membantu aplikasi mempertahankan tata letak yang stabil.

Saat menggunakan pendekatan ini, Anda bertanggung jawab untuk memastikan bahwa bagian penting UI aplikasi tidak tertutup oleh kolom sistem. Untuk pembahasan topik ini lebih lanjut, lihat tutorial Menyembunyikan Status Bar.