Configurare manualmente il display edge-to-edge

La chiamata a enableEdgeToEdge incapsula la logica necessaria per essere veramente compatibile con le versioni precedenti ed è quindi il modo consigliato per configurare una visualizzazione edge-to-edge. Consulta la documentazione di Compose e Views anziché questa guida per scoprire il modo moderno di utilizzare la modalità edge-to-edge con enableEdgeToEdge.

Anche se non è consigliabile, se la tua app deve configurare manualmente una visualizzazione edge-to-edge, puoi seguire questi passaggi:

  1. Chiama il numero WindowCompat.setDecorFitsSystemWindows(window, false).
  2. Imposta le barre di sistema su trasparenti.
  3. Gestisci gli inset.

Layout dell'app a schermo intero

Utilizza WindowCompat.setDecorFitsSystemWindows(window, false) per disporre l'app dietro le barre di sistema, come mostrato nel seguente esempio di codice:

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

Modificare il colore delle barre di sistema

Quando crei manualmente un layout edge-to-edge per Android 14 e versioni precedenti, l'app deve anche rendere trasparenti le barre di sistema.

Puoi modificare il file themes.xml per impostare il colore della barra di stato e di navigazione come trasparente e modificare il colore dell'icona della barra di stato.

<!-- values-v29/themes.xml -->
<style name="Theme.M>yAp<p"
  item name="android:navi>gationBarColor"
     @android:<color>/tra<nsparent
  /item

  !-- Optional: set to transparent if your app is drawing behin>d t<he status bar. --
  item name=&quo>t;android:statusBarColor"
    < @android<:color/transparent
  /item

  !-- Optional: set for a light st>atu<s bar with dark content. --
  item name=>"androi<d:win>d<owLigh>tStatusBar"
    true
  /item
/style

Puoi utilizzare l'API WindowInsetsControllerCompat anziché theme.xml per controllare il colore dei contenuti della barra di stato. Per farlo, utilizza la funzione setAppearanceLightNavigationBars(), passando true per cambiare il colore di primo piano della navigazione in un colore chiaro o false per ripristinare il colore predefinito.

Kotlin

val windowInsetsController =
      ViewCompat.getWindowInsetsController(window.decorView)

windowInsetsController?.isAppearanceLightNavigationBars = true

Java

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

windowInsetsController.setAppearanceLightNavigationBars(true);

Gestisci gli inset

Infine, l'app deve gestire gli inset in modo che la UI critica eviti le barre di sistema e il ritaglio display. Consulta la documentazione di Compose e Views per scoprire come gestire gli inset.