Nascondi la barra di navigazione

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

Anche se questa lezione è incentrata su come nascondere la barra di navigazione, ti consigliamo di progettare l'app in modo da nascondere la barra di stato contemporaneamente, come descritto in Nascondere la barra di stato. Nascondendo le barre di navigazione e di stato (mantenendole comunque facilmente accessibili) consenti ai contenuti di utilizzare l'intero spazio di visualizzazione, fornendo così un'esperienza utente più immersiva.

barre di sistema

Figura 1. Barra di navigazione.

Nascondi la barra di navigazione

Puoi nascondere la barra di navigazione utilizzando il flag SYSTEM_UI_FLAG_HIDE_NAVIGATION. Questo snippet nasconde sia la barra di navigazione che 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:

  • In questo modo, se tocchi un punto qualsiasi dello schermo la barra di navigazione e la barra di stato vengono visualizzate di nuovo e rimangono visibili. L'interazione dell'utente causa la cancellazione dei flag.
  • Una volta cancellati i flag, l'app deve reimpostarli se vuoi nascondere di nuovo le barre. Consulta la sezione Rispondere alle modifiche alla visibilità dell'interfaccia utente per una discussione su come rimanere in ascolto delle modifiche alla visibilità dell'interfaccia utente in modo che la tua app possa rispondere di conseguenza.
  • La scelta dei flag UI fa la differenza. Se nascondi le barre di sistema nel metodo onCreate() dell'attività e l'utente preme Home, le barre di sistema riappariranno. Quando l'utente riapre l'attività, onCreate() non verrà chiamato, quindi le barre di sistema rimarranno visibili. Se vuoi che le modifiche all'interfaccia utente di sistema vengano mantenute mentre l'utente entra ed esce dalla tua attività, imposta i flag UI in onResume() o onWindowFocusChanged().
  • Il metodo setSystemUiVisibility() ha un effetto solo se la vista da cui lo chiami è visibile.
  • Se esci dalla visualizzazione, i flag impostati su setSystemUiVisibility() vengono cancellati.

Visualizzazione dei contenuti dietro la barra di navigazione

Su Android 4.1 e versioni successive puoi impostare i contenuti dell'applicazione in modo che vengano visualizzati dietro la barra di navigazione, in modo che non vengano ridimensionati quando la barra di navigazione viene nascosta e visualizzata. Per farlo, utilizza SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION. Potresti anche dover utilizzare SYSTEM_UI_FLAG_LAYOUT_STABLE per fare in modo che la tua app mantenga un layout stabile.

Quando utilizzi questo approccio, è tua responsabilità assicurarti che le parti fondamentali dell'interfaccia utente dell'app non vengano coperte dalle barre di sistema. Per ulteriori argomentazioni su questo argomento, consulta la lezione Nascondere la barra di stato.