Nascondi la barra di navigazione

Questa lezione descrive come nascondere la barra di navigazione, Android 4.0 (livello API 14).

Anche se questa lezione si concentra su come nascondere barra di navigazione, devi progettare l'app in modo da nascondere la barra di stato contemporaneamente, come descritto in Nascondere la barra di stato. Occultamento delle barre di navigazione e di stato (pur mantenendole facilmente accessibili) consente ai contenuti di utilizzare l'intero spazio di visualizzazione, offrendo così un ambiente più immersivo un'esperienza utente positiva.

barre di sistema

Figura 1. Barra di navigazione.

Nascondi barra di navigazione

Puoi nascondere la barra di navigazione utilizzando il SYSTEM_UI_FLAG_HIDE_NAVIGATION flag. Questo snippet nasconde la barra di navigazione e la barra di stato:

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);

Nota:

  • Con questo approccio, toccando un punto qualsiasi dello schermo viene attivata la barra di navigazione (e barra di stato) per riapparire e rimanere visibile. A causa dell'interazione dell'utente, i flag vengono possono essere cancellati.
  • Una volta cancellati i flag, l'app dovrà reimpostarli se vuoi nascondere di nuovo le barre. Consulta l'articolo Risposta alle modifiche della visibilità nell'interfaccia utente per un discussione su come ascoltare le modifiche alla visibilità dell'interfaccia utente affinché la tua app devono rispondere di conseguenza.
  • Il punto in cui imposti i flag UI fa la differenza. Se nascondi le barre di sistema nella onCreate() e l'utente preme Home, le barre di sistema verranno riapparire. Quando l'utente riapre l'attività, onCreate() non verranno chiamati, quindi le barre di sistema rimarranno visibili. Se vuoi che vengano apportate modifiche all'interfaccia utente vengono mantenuti man mano che l'utente entra ed esce dalla tua attività, imposta i flag UI nelle onResume() o onWindowFocusChanged().
  • Solo il metodo setSystemUiVisibility() ha effetto se la visualizzazione da cui lo chiami è visibile.
  • L'uscita dalla visualizzazione causa flag imposta con setSystemUiVisibility() da cancellare.

Fai in modo che i contenuti vengano visualizzati dietro la barra di navigazione

Su Android 4.1 e versioni successive, puoi impostare i contenuti della tua applicazione in modo che barra di navigazione per fare in modo che i contenuti non vengano ridimensionati mentre la barra di navigazione si nasconde visualizzati. A questo scopo, utilizza SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION. Potresti dover usare anche SYSTEM_UI_FLAG_LAYOUT_STABLE per aiutare la tua app a mantenere e stabile.

Quando utilizzi questo approccio, diventa tua responsabilità garantire che le parti critiche dell'UI dell'app non vengono coperte dalle barre di sistema. Per ulteriori informazioni su questo argomento, consulta Come nascondere la barra di stato.