Usa inserciones en Views y Compose

Si tu app contiene código de Compose y de View, es posible que debas especificar qué inserciones del sistema debe consumir cada uno y asegurarte de que las inserciones se envíen a las vistas secundarias.

Cómo anular las inserciones predeterminadas

Es posible que debas anular las inserciones predeterminadas cuando tu pantalla tenga código de Views y Compose en la misma jerarquía. En este caso, debes indicar explícitamente cuál debe consumir las inserciones y cuál debe ignorarlas.

Por ejemplo, si tu diseño más externo es un diseño de View de Android, debes consumir las inserciones en el sistema de View y omitirlas para Compose. Como alternativa, si tu diseño más externo es un elemento componible, debes consumir las inserciones en Compose y agregar relleno a los elementos componibles AndroidView según corresponda.

De forma predeterminada, cada ComposeView consume todas las inserciones en el nivel de consumo WindowInsetsCompat. Para cambiar este comportamiento predeterminado, establece AbstractComposeView.consumeWindowInsets en false.

Envío de inserciones retrocompatible para vistas

Si tu app contiene código de Views, es posible que debas confirmar que las inserciones se envían a las vistas secundarias en dispositivos que ejecutan Android 10 (nivel de API 29) o versiones anteriores. Consulta la guía de Views borde a borde para obtener más información.

Íconos de la barra del sistema

Llamar a enableEdgeToEdge garantiza que los colores de los íconos de la barra del sistema se actualicen cuando cambia el tema del dispositivo.

Cuando vayas de borde a borde, es posible que debas actualizar manualmente los colores de los íconos de la barra del sistema para que contrasten con el fondo de tu app. Por ejemplo, para crear íconos de barra de estado claros, haz lo siguiente:

Kotlin

WindowCompat.getInsetsController(window, window.decorView)
    .isAppearanceLightStatusBars = false

Java

WindowCompat.getInsetsController(window, window.getDecorView())
    .setAppearanceLightStatusBars(false);