La visualizzazione edge-to-edge consente alla tua app di disegnare la UI dietro le barre di sistema (la barra di stato, la barra del titolo e la barra di navigazione) per offrire un'esperienza utente più coinvolgente. Se scegli come target dispositivi con Android 15 (livello API 35) o versioni successive, la modalità edge-to-edge viene applicata per impostazione predefinita.
Per visualizzare correttamente i contenuti edge-to-edge su tutte le versioni di Android, segui questi passaggi di configurazione. Senza questi passaggi, l'app potrebbe disegnare colori a tinta unita dietro le barre di sistema o non animare i contenuti in modo sincrono con le transizioni della tastiera sullo schermo (IME).
Competenze Android
Visualizza su GitHubAggiungi il supporto edge-to-edge
android skills add edge-to-edge1. Attiva la visualizzazione edge-to-edge
Per attivare la modalità edge-to-edge nelle versioni precedenti di Android, chiama
enableEdgeToEdge() nel metodo Activity.onCreate():
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() // ... }
Per impostazione predefinita, enableEdgeToEdge() rende trasparenti le barre di sistema, tranne nella modalità di navigazione con tre pulsanti, in cui applica un velo traslucido alla barra di navigazione per un contrasto migliore. Il colore delle icone di sistema e dello scrim si adatta al tema chiaro o scuro del sistema.
2. Configura windowSoftInputMode
Imposta android:windowSoftInputMode="adjustResize" nella voce AndroidManifest.xml dell'attività. Questa impostazione consente alla tua app di ricevere gli inset IME,
permettendoti di regolare il layout con il padding quando la tastiera sullo schermo
appare o scompare.
<!-- In your AndroidManifest.xml file: -->
<activity
android:name=".ui.MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize"
android:theme="@style/Theme.MyApplication"
android:exported="true">
...
</activity>
3. Gestisci le sovrapposizioni utilizzando gli inset
Una volta attivata la modalità edge-to-edge, alcuni contenuti e elementi UI dell'app potrebbero essere disegnati dietro le barre di sistema. Per evitare che elementi critici o interattivi vengano oscurati dalle barre di sistema o si sovrappongano ai gesti di sistema, devi gestire gli inset.
Gli inset descrivono le parti dello schermo che si intersecano con la UI di sistema o i gesti di sistema. I principali tipi di inserti da considerare per la visualizzazione edge-to-edge sono:
- Inset delle barre di sistema:rappresentano le aree in cui vengono visualizzate le barre di sistema. Utilizzali per evitare che la UI venga oscurata dalle barre di sistema.
- Inset del ritaglio display:rappresentano le aree in cui è presente un ritaglio fisico (come un notch della fotocamera) sullo schermo del dispositivo.
In Compose, puoi gestire gli inset utilizzando righelli, modificatori di spaziatura interna o modificatori delle dimensioni degli inset. Per indicazioni dettagliate, consulta Informazioni sugli inset delle finestre.
Argomenti avanzati
Per casi d'uso edge-to-edge più avanzati, tieni presente quanto segue.
Modalità immersiva
Alcuni contenuti, come video o mappe, traggono vantaggio da un'esperienza completamente immersiva in cui le barre di sistema sono nascoste. Puoi nascondere le barre di sistema utilizzando
WindowInsetsControllerCompat:
val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView) // Hide the system bars. windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) // Show the system bars. windowInsetsController.show(WindowInsetsCompat.Type.systemBars())
Colori e icone della barra di sistema
Quando utilizzi la modalità edge-to-edge, lo sfondo dell'app potrebbe essere visibile dietro le barre di sistema, quindi potresti dover regolare i colori delle icone delle barre di sistema per un contrasto migliore.
Per cambiare le icone della barra di stato in chiare o scure, utilizza WindowInsetsControllerCompat:
// Set status bar icons to dark. WindowCompat.getInsetsController(window, window.decorView) .isAppearanceLightStatusBars = true // Set status bar icons to light. WindowCompat.getInsetsController(window, window.decorView) .isAppearanceLightStatusBars = false
Protezione della barra di sistema
Sebbene enableEdgeToEdge() fornisca barre di sistema trasparenti o semitrasparenti predefinite, potresti doverle personalizzare. Consulta le indicazioni per la progettazione delle barre di sistema Android e le indicazioni per la progettazione edge-to-edge per decidere quando utilizzare barre trasparenti o semitrasparenti.
Per rendere la barra di navigazione con tre pulsanti completamente trasparente anziché traslucida, puoi disattivare l'applicazione del contrasto:
window.isNavigationBarContrastEnforced = false
Per saperne di più, consulta Informazioni sulla protezione della barra di sistema.