Informazioni sui ritagli

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

Esempio di ritaglio in modalità verticale
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 anche supportare i ritagli display 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 di ritaglio, ovvero il rettangolo edge-to-edge sulla superficie del display che contiene il ritaglio.

Caso predefinito

Per impostazione predefinita, le app che hanno come target il livello API 34 o inferiore o le attività che non chiamano enableEdgeToEdge non vengono disegnate nella regione di ritaglio, a meno che l'app non venga disegnata in una barra di sistema contenente il ritaglio display.

Le app che hanno come target il livello API 35 o superiore sui dispositivi con Android 15 o versioni successive o le attività che chiamano enableEdgeToEdge vengono disegnate nella regione di 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 superiore sui dispositivi con Android 15 o versioni successive.

Gestire manualmente le informazioni sul ritaglio

Devi gestire le informazioni sul ritaglio per evitare che l'area di ritaglio oscuri testo, controlli o elementi interattivi importanti che richiedono il riconoscimento del tocco preciso (la sensibilità al tocco potrebbe essere inferiore nell'area di ritaglio). Quando gestisci i ritagli, non codificare l'altezza della barra di stato, in quanto 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 di ritaglio nei tuoi elementi componibili. Questo approccio ti consente di rispettare il padding del ritaglio display, se necessario, o di ignorarlo se non è necessario.

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