Cómo configurar la pantalla de borde a borde manualmente

Para habilitar la pantalla de borde a borde en tu app, llama a enableEdgeToEdge. Esto debería ser suficiente para la mayoría de las apps. En esta guía, se describe cómo habilitar la función de borde a borde si tu app necesita hacerlo sin usar enableEdgeToEdge.

Cómo diseñar tu app en pantalla completa

Usa WindowCompat.setDecorFitsSystemWindows(window, false) para distribuir tu app detrás de las barras del sistema, como se muestra en el siguiente ejemplo de código:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  WindowCompat.setDecorFitsSystemWindows(window, false)
}

Java

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
}

Cómo cambiar el color de las barras del sistema

Cuando operas en un diseño de borde a borde, tu app necesita cambiar los colores de las barras del sistema para permitir que el contenido debajo sea visible. Una vez que tu app realiza este paso, el sistema controla toda la protección visual de la interfaz de usuario en el modo de navegación por gestos y en el modo de botones.

  • Modo de navegación por gestos: El sistema aplica una adaptación dinámica de color en la que el contenido de las barras del sistema cambia de color según el contenido detrás de ellas. En el siguiente ejemplo, el controlador de la barra de navegación cambia a un color oscuro cuando se encuentra sobre contenido claro y a un color claro cuando lo está.
Figura 1: Cambios de color en el modo de navegación por gestos.
  • Modo de botón: El sistema aplica una lámina traslúcida detrás de las barras del sistema (para el nivel de API 29 o versiones posteriores) o una barra del sistema transparente (para el nivel de API 28 o versiones anteriores).
Una imagen que muestra barras de sistema translúcidas
Figura 2: Lámina translúcida detrás de las barras del sistema.
  • Color del contenido de la barra de estado: Controla el color del contenido de la barra de estado, como la hora y los íconos.
Una imagen que muestra el color del contenido de la barra de estado
Figura 3: Color del contenido de la barra de estado

Puedes editar el archivo themes.xml para establecer el color de la barra de navegación y, de manera opcional, establecer la barra de estado como transparente y el color de contenido de la barra de estado como oscuro.

<!-- values-v29/themes.xml -->
<style name="Theme.MyApp">
  <item name="android:navigationBarColor">
     @android:color/transparent
  </item>

  <!-- Optional: set to transparent if your app is drawing behind the status bar. -->
  <item name="android:statusBarColor">
     @android:color/transparent
  </item>

  <!-- Optional: set for a light status bar with dark content. -->
  <item name="android:windowLightStatusBar">
    true
  </item>
</style>

Puedes usar la API de WindowInsetsController directamente, pero te recomendamos que uses la biblioteca de compatibilidad WindowInsetsControllerCompat siempre que sea posible. Puedes usar la API de WindowInsetsControllerCompat en lugar de theme.xml para controlar el color del contenido de la barra de estado. Para ello, usa la función setAppearanceLightNavigationBars() y pasa true para cambiar el color de primer plano de la navegación a un color claro, o false para volver al color predeterminado.

Kotlin

val windowInsetsController =
      ViewCompat.getWindowInsetsController(window.decorView)

windowInsetsController?.isAppearanceLightNavigationBars = true

Java

WindowInsetsControllerCompat windowInsetsController =
      ViewCompat.getWindowInsetsController(getWindow().getDecorView());
if (windowInsetsController == null) {
    return;
}

windowInsetsController.setAppearanceLightNavigationBars(true);