En esta lección, se describe cómo atenuar las barras del sistema (es decir, las barras de estado y navegación) en Android 4.0 (nivel de API 14) y versiones posteriores. Android no proporciona una forma integrada de atenuar las barras del sistema en versiones anteriores.
Cuando usas este enfoque, el contenido no cambia de tamaño, pero los íconos en las barras del sistema se alejan visualmente. En cuanto el usuario toca el área de la barra de estado o de navegación de la pantalla, ambas barras se vuelven completamente visibles. La ventaja de este enfoque es que las barras siguen presentes, pero sus detalles están ocultos, lo que crea una experiencia envolvente sin sacrificar el fácil acceso a las barras.
Cómo atenuar las barras de estado y navegación
Puedes usar la marca SYSTEM_UI_FLAG_LOW_PROFILE
para atenuar las barras de estado y navegación de la siguiente manera:
Kotlin
// This example uses decor view, but you can use any visible view. activity?.window?.decorView?.apply { systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE }
Java
// This example uses decor view, but you can use any visible view. View decorView = getActivity().getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_LOW_PROFILE; decorView.setSystemUiVisibility(uiOptions);
En cuanto el usuario toca la barra de estado o navegación, se borra la marca, lo que provoca que las barras no se atenúen. Después de borrar la marca, tu app debe restablecerla si quieres volver a atenuar las barras.
En la figura 1, se muestra una galería de imágenes en la que la barra de navegación está atenuada (ten en cuenta que la app de Galería oculta por completo la barra de estado; no la atenúa). Observa que la barra de navegación (lado derecho de la imagen) tiene puntos blancos tenues que representan los controles de navegación:
En la figura 2, se muestra la misma galería de imágenes, pero con las barras del sistema:
Cómo mostrar las barras de estado y navegación
Si quieres borrar de manera programática las marcas establecidas con
setSystemUiVisibility()
, puedes hacerlo
de la siguiente manera:
Kotlin
activity?.window?.decorView?.apply { // Calling setSystemUiVisibility() with a value of 0 clears // all flags. systemUiVisibility = 0 }
Java
View decorView = getActivity().getWindow().getDecorView(); // Calling setSystemUiVisibility() with a value of 0 clears // all flags. decorView.setSystemUiVisibility(0);