Configurer manuellement l'écran bord à bord

Vous pouvez activer l'affichage bord à bord dans votre application en appelant enableEdgeToEdge. Cela devrait suffire pour la plupart des applications. Ce guide explique comment activer cette fonctionnalité si votre application doit le faire sans utiliser enableEdgeToEdge.

Afficher votre application en plein écran

Utilisez WindowCompat.setDecorFitsSystemWindows(window, false) pour présenter votre application derrière les barres système, comme illustré dans l'exemple de code suivant:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  WindowCompat.setDecorFitsSystemWindows(window, false)
}

Java

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
}

Modifier la couleur des barres système

Lorsque vous utilisez une mise en page bord à bord, votre application doit modifier les couleurs des barres système pour que le contenu en dessous soit visible. Une fois que votre application a effectué cette étape, le système gère toute la protection visuelle de l'interface utilisateur en mode navigation par gestes et en mode bouton.

  • Mode de navigation par gestes:le système applique une adaptation de couleur dynamique dans laquelle le contenu des barres système change de couleur en fonction du contenu derrière elles. Dans l'exemple suivant, la poignée de la barre de navigation prend une couleur sombre lorsqu'elle se trouve au-dessus du contenu clair et une couleur claire lorsqu'elle se trouve au-dessus du contenu sombre.
Figure 1 : Modifications de couleur en mode navigation par gestes.
  • Mode Bouton:le système applique un fond translucide derrière les barres système (pour les niveaux d'API 29 ou ultérieurs) ou une barre système transparente (pour le niveau d'API 28 ou antérieur).
Image montrant des barres système translucides
Figure 2. Fond translucide derrière les barres système.
  • Couleur du contenu de la barre d'état:contrôle la couleur du contenu de la barre d'état, comme l'heure et les icônes.
Image affichant la couleur du contenu de la barre d'état
Figure 3. Couleur du contenu de la barre d'état

Vous pouvez modifier le fichier themes.xml pour définir la couleur de la barre de navigation et, éventuellement, définir la barre d'état sur transparente et la couleur du contenu de la barre d'état sur sombre.

<!-- values-v29/themes.xml -->
<style name="Theme.MyApp">
  <item name="android:navigationBarColor">
     @android:color/transparent
  </item>

  <!-- Optional: set to transparent if your app is drawing behind the status bar. -->
  <item name="android:statusBarColor">
     @android:color/transparent
  </item>

  <!-- Optional: set for a light status bar with dark content. -->
  <item name="android:windowLightStatusBar">
    true
  </item>
</style>

Vous pouvez utiliser l'API WindowInsetsController directement, mais nous vous recommandons vivement d'utiliser la bibliothèque Support WindowInsetsControllerCompat lorsque cela est possible. Vous pouvez utiliser l'API WindowInsetsControllerCompat au lieu de theme.xml pour contrôler la couleur du contenu de la barre d'état. Pour ce faire, utilisez la fonction setAppearanceLightNavigationBars(), en transmettant true pour remplacer la couleur de premier plan de la navigation par une couleur claire ou false pour rétablir la couleur par défaut.

Kotlin

val windowInsetsController =
      ViewCompat.getWindowInsetsController(window.decorView)

windowInsetsController?.isAppearanceLightNavigationBars = true

Java

WindowInsetsControllerCompat windowInsetsController =
      ViewCompat.getWindowInsetsController(getWindow().getDecorView());
if (windowInsetsController == null) {
    return;
}

windowInsetsController.setAppearanceLightNavigationBars(true);