Menyembunyikan menu navigasi

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

Meskipun tutorial ini berfokus pada menyembunyikan menu navigasi, Anda harus mendesain aplikasi Anda untuk menyembunyikan status bar pada saat yang sama, seperti dijelaskan dalam Menyembunyikan Status Bar. Menyembunyikan menu navigasi dan status bar (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 yang berikut ini:

  • Dengan pendekatan ini, menyentuh di mana saja di layar menyebabkan menu navigasi (dan status bar) muncul kembali dan tetap terlihat. Interaksi pengguna menyebabkan flag dihapus.
  • Setelah flag dihapus, aplikasi Anda perlu menyetelnya kembali jika Anda ingin menyembunyikan bar lagi. Lihat Merespons Perubahan Visibilitas UI untuk pembahasan tentang cara memproses perubahan visibilitas UI sehingga aplikasi Anda dapat merespons dengan benar.
  • Tempat Anda menetapkan flag UI akan membuat perbedaan. Jika Anda menyembunyikan kolom sistem di metode onCreate() aktivitas Anda 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 menginginkan perubahan UI sistem tetap ada saat pengguna masuk dan keluar dari aktivitas Anda, 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 menetapkan konten aplikasi Anda 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 Anda mempertahankan tata letak yang stabil.

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