Configurare manualmente il display edge-to-edge

Puoi attivare il display edge-to-edge nella tua app chiamando enableEdgeToEdge. Questa opzione dovrebbe essere sufficiente per la maggior parte delle app. Questa guida descrive come abilitare la funzionalità edge-to-edge se la tua app deve farlo senza utilizzare enableEdgeToEdge.

Disporre la tua app a schermo intero

Utilizza WindowCompat.setDecorFitsSystemWindows(window, false) per disporre la tua 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);
}

Modifica del colore delle barre di sistema

Quando utilizzi un layout edge-to-edge, l'app deve modificare i colori delle barre di sistema per rendere visibili i contenuti sottostanti. Dopo che l'app ha eseguito questo passaggio, il sistema gestisce tutta la protezione visiva dell'interfaccia utente in modalità di navigazione tramite gesti e in modalità con pulsanti.

  • Modalità di navigazione tramite gesti: il sistema applica un adattamento dinamico del colore in cui i contenuti delle barre di sistema cambiano colore in base ai contenuti sottostanti. Nell'esempio seguente, il punto di manipolazione nella barra di navigazione diventa di colore scuro quando è sopra contenuti chiari e di colore chiaro in corrispondenza di contenuti scuri.
Figura 1. Cambiamenti di colore in modalità di navigazione tramite gesti.
  • Modalità pulsante: il sistema applica una scrim trasparente dietro le barre di sistema (per livello API 29 o versioni successive) o una barra di sistema trasparente (per il livello API 28 o versioni precedenti).
Un'immagine che mostra barre di sistema traslucide
Figura 2. Tela traslucida dietro le barre di sistema.
  • Colore dei contenuti della barra di stato: consente di controllare il colore dei contenuti della barra di stato, ad esempio ora e icone.
Il colore dei contenuti della barra di stato di un'immagine
Figura 3. Colore dei contenuti della barra di stato.

Puoi modificare il file themes.xml per impostare il colore della barra di navigazione e, facoltativamente, impostare la barra di stato come trasparente e il colore dei contenuti della barra su scuro.

<!-- 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>

Puoi usare direttamente l'API WindowInsetsController, ma ti consigliamo vivamente di utilizzare la libreria di assistenza WindowInsetsControllerCompat ove possibile. Puoi utilizzare l'API WindowInsetsControllerCompat anziché theme.xml per controllare il colore dei contenuti della barra di stato. A questo scopo, utilizza la funzione setAppearanceLightNavigationBars(), passando true per modificare 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);