Masquer la barre de navigation

Cette leçon explique comment masquer la barre de navigation introduite dans Android 4.0 (niveau d'API 14).

Bien que cette leçon se concentre sur le masquage de la barre de navigation, vous devez concevoir votre application de manière à masquer la barre d'état en même temps, comme décrit dans la section Masquer la barre d'état. Si vous masquez les barres de navigation et d'état (tout en les maintenant facilement accessibles), le contenu peut utiliser la totalité de l'espace d'affichage, offrant ainsi une expérience utilisateur plus immersive.

barres système

Figure 1 : Barre de navigation

Masquer la barre de navigation

Vous pouvez masquer la barre de navigation à l'aide de l'indicateur SYSTEM_UI_FLAG_HIDE_NAVIGATION. Cet extrait de code masque à la fois la barre de navigation et la barre d'état:

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

Remarques :

  • Avec cette approche, si vous appuyez n'importe où sur l'écran, la barre de navigation (et la barre d'état) réapparaissent et restent visibles. L'interaction de l'utilisateur entraîne la suppression des indicateurs.
  • Une fois les indicateurs supprimés, votre application doit les réinitialiser si vous souhaitez à nouveau masquer les barres. Pour découvrir comment écouter les changements de visibilité de l'UI afin que votre application puisse réagir en conséquence, consultez la section Répondre aux changements de visibilité de l'UI.
  • L'emplacement où vous définissez les indicateurs de l'interface utilisateur fait une différence. Si vous masquez les barres système dans la méthode onCreate() de votre activité et que l'utilisateur appuie sur Accueil, elles réapparaîtront. Lorsque l'utilisateur rouvre l'activité, onCreate() n'est pas appelé. Par conséquent, les barres système restent visibles. Si vous souhaitez que les modifications de l'UI du système persistent lorsque l'utilisateur accède à votre activité ou la quitte, définissez des indicateurs d'interface utilisateur dans onResume() ou onWindowFocusChanged().
  • La méthode setSystemUiVisibility() n'a d'effet que si la vue à partir de laquelle vous l'appelez est visible.
  • Si vous quittez la vue, les indicateurs définis avec setSystemUiVisibility() seront effacés.

Faire apparaître le contenu derrière la barre de navigation

Sur Android 4.1 et versions ultérieures, vous pouvez définir le contenu de votre application pour qu'il s'affiche derrière la barre de navigation, afin qu'il ne soit pas redimensionné lorsque la barre de navigation est masquée et affichée. Pour ce faire, utilisez SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION. Vous devrez peut-être également utiliser SYSTEM_UI_FLAG_LAYOUT_STABLE pour aider votre application à conserver une mise en page stable.

Lorsque vous utilisez cette approche, il vous incombe de vous assurer que les parties critiques de l'interface utilisateur de votre application ne sont pas couvertes par des barres système. Pour en savoir plus à ce sujet, consultez la leçon Masquer la barre d'état.