La visualización de borde a borde permite que tu app dibuje su IU detrás de las barras del sistema (la barra de estado, la barra de subtítulos y la barra de navegación) para lograr una experiencia del usuario más envolvente. Si tu app se orienta a dispositivos que ejecutan Android 15 (nivel de API 35) o versiones posteriores, se aplica el diseño de borde a borde de forma predeterminada.
Para mostrar correctamente el contenido de borde a borde en todas las versiones de Android, sigue estos pasos de configuración. Sin estos pasos, es posible que tu app dibuje colores sólidos detrás de las barras del sistema o que no anime su contenido de forma síncrona con las transiciones del teclado en pantalla (IME).
Habilidades de Android
Ver en GitHubAgrega compatibilidad con el diseño de borde a borde
android skills add edge-to-edge1. Habilita la pantalla de borde a borde
Para habilitar el diseño de borde a borde en versiones anteriores de Android, llama a enableEdgeToEdge() en tu método Activity.onCreate():
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() // ... }
De forma predeterminada, enableEdgeToEdge() hace que las barras del sistema sean transparentes, excepto en el modo de navegación con 3 botones, en el que aplica un scrim translúcido a la barra de navegación para mejorar el contraste. El color de los íconos del sistema y la máscara se adaptan al tema claro u oscuro del sistema.
2. Configura windowSoftInputMode
Establece android:windowSoftInputMode="adjustResize" en la entrada AndroidManifest.xml de tu actividad. Este parámetro de configuración permite que tu app reciba inserciones de IME,
lo que te permite ajustar tu diseño con padding cuando aparece o desaparece
el teclado en pantalla.
<!-- 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. Controla las superposiciones con inserciones
Una vez que se habilita el diseño de borde a borde, es posible que algunos elementos de la IU y el contenido de tu app se dibujen detrás de las barras del sistema. Para evitar que las barras del sistema oculten los elementos críticos o interactivos, o que se superpongan con los gestos del sistema, debes controlar las inserciones.
Las inserciones describen partes de la pantalla que se cruzan con la IU del sistema o los gestos del sistema. Los principales tipos de inserciones que se deben tener en cuenta para la visualización de borde a borde son los siguientes:
- Inserciones de barras del sistema: Representan las áreas en las que se muestran las barras del sistema. Úsalas para evitar que las barras del sistema oculten la IU.
- Inserciones de corte de pantalla: Representan áreas en las que existe un corte físico (como un recorte de cámara) en la pantalla del dispositivo.
En Compose, puedes controlar los elementos insertados con reglas, modificadores de padding o modificadores de tamaño de elementos insertados. Consulta Acerca de las inserciones de ventanas para obtener orientación detallada.
Temas avanzados
Ten en cuenta lo siguiente para casos de uso más avanzados de borde a borde.
Modo envolvente
Algunos tipos de contenido, como los videos o los mapas, se benefician de una experiencia completamente inmersiva en la que se ocultan las barras del sistema. Puedes ocultar las barras del sistema con 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())
Colores e íconos de la barra del sistema
Cuando se usa el modo de borde a borde, es posible que el fondo de la app se vea detrás de las barras del sistema, por lo que tal vez debas ajustar los colores de los íconos de la barra del sistema para mejorar el contraste.
Para cambiar los íconos de la barra de estado a claros u oscuros, usa 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
Protección de la barra del sistema
Si bien enableEdgeToEdge() proporciona barras del sistema transparentes o translúcidas de forma predeterminada, es posible que debas personalizarlas. Consulta la guía de diseño de las barras del sistema Android y la guía de diseño de borde a borde para decidir cuándo usar barras transparentes o translúcidas.
Para que la barra de navegación de 3 botones sea completamente transparente en lugar de traslúcida, puedes inhabilitar la aplicación de contraste:
window.isNavigationBarContrastEnforced = false
Para obtener más información, consulta Acerca de la protección de la barra del sistema.