Informazioni sui ritagli

Un ritaglio display è un'area su alcuni dispositivi che si estende nella superficie del display. Consente un'esperienza edge-to-edge, lasciando spazio per i sensori importanti sulla parte anteriore del dispositivo.

Esempio di ritaglio in modalità Ritratto
Figura 1. Esempio di ritaglio in modalità Ritratto
Esempio di ritaglio in modalità Orizzontale
Figura 2. Esempio di ritaglio in modalità Orizzontale

Android supporta i ritagli display sui dispositivi con Android 9 (livello API 28) e versioni successive. Tuttavia, i produttori di dispositivi possono supportare i ritagli display anche sui dispositivi con Android 8.1 o versioni precedenti.

Questa pagina descrive come implementare il supporto per i dispositivi con ritagli in Compose, incluso come utilizzare l'area del ritaglio, ovvero il rettangolo edge-to-edge sulla superficie del display che contiene il ritaglio.

Caso predefinito

Le app che hanno come target il livello API 34 o versioni precedenti o le attività che non chiamano enableEdgeToEdge non verranno visualizzate nella regione del ritaglio per impostazione predefinita, a meno che l'app non venga visualizzata in una barra di sistema contenente il ritaglio display.

Le app che hanno come target il livello API 35 o versioni successive su dispositivi con Android 15 o versioni successive, o le attività che chiamano enableEdgeToEdge, disegnano nella regione del ritaglio.

In altre parole, LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT, LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES e LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER vengono interpretati come LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS per le finestre non mobili nelle app che hanno come target il livello API 35 o versioni successive sui dispositivi con Android 15 o versioni successive.

Gestisci manualmente le informazioni sul ritaglio

Devi gestire le informazioni sul ritaglio per evitare che l'area del ritaglio oscuri testo, controlli o elementi interattivi importanti che richiedono un riconoscimento del tocco preciso (la sensibilità al tocco potrebbe essere inferiore nell'area del ritaglio). Quando gestisci i ritagli, non impostare come hardcoded l'altezza della barra di stato, poiché ciò può causare la sovrapposizione o il taglio dei contenuti. Gestisci invece i ritagli in uno dei seguenti modi:

Per Compose, ti consigliamo di utilizzare displayCutout, safeContent o safeDrawing per gestire gli inset dei ritagli nei composabili. Questo approccio ti consente di rispettare il padding del ritaglio display dove richiesto o di ignorarlo dove non è richiesto.

Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) {
    drawRect(Color.Red, style = Stroke(2.dp.toPx()))
}