Configurare manualmente il display edge-to-edge

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

Disporre l'app a schermo intero

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

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 operi in un layout da un'estremità all'altra, l'app deve modificare i colori delle barre di sistema per consentire la visualizzazione dei contenuti sottostanti. Dopo che l'app ha eseguito questo passaggio, il sistema gestisce tutta la protezione visiva dell'interfaccia utente in modalità di navigazione con gesti e in modalità di pulsante.

  • Modalità di navigazione con gesti:il sistema applica l'adattamento dinamico dei colori, in cui i contenuti delle barre di sistema cambiano colore in base ai contenuti che si trovano dietro. Nell'esempio seguente, l'handle nella barra di navigazione diventa di colore scuro quando si trova sopra i contenuti chiari e di colore chiaro quando si trova sopra i contenuti scuri.
Figura 1. Modifiche ai colori in modalità di navigazione tramite gesti.
  • Modalità pulsante:il sistema applica un'opacità traslucida alle barre di sistema (per il livello API 29 o versioni successive) o una barra di sistema trasparente (per il livello API 28 o versioni precedenti).
Un'immagine che mostra le barre di sistema traslucide
Figura 2. Tela traslucida dietro le barre di sistema.
  • Colore dei contenuti della barra di stato:controlla il colore dei contenuti della barra di stato, ad esempio l'ora e le icone.
Un'immagine che mostra il colore dei contenuti della barra di stato
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 di stato come 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 utilizzare direttamente l'API WindowInsetsController, ma ti consigliamo vivamente di utilizzare la libreria di supporto WindowInsetsControllerCompat se 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 cambiare il colore del 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);