En esta lección, se describe cómo atenuar las barras del sistema (es decir, el estado y la navegación barras) en Android 4.0 (nivel de API 14) y versiones posteriores. Android no proporciona una forma integrada de atenuar las del sistema en versiones anteriores.
Cuando usas este enfoque, el contenido no cambia de tamaño, pero los íconos de las barras del sistema se alejan visualmente. En cuanto el usuario toca la barra de estado o el área de la barra de navegación de la pantalla, ambas barras se vuelven totalmente visibles. La ventaja de esto enfoque es que las barras aún están presentes, pero sus detalles están ocultos, por lo que lo que crea una experiencia envolvente sin sacrificar el acceso sencillo a los bares.
Cómo atenuar las barras de estado y navegación
Puedes atenuar las barras de estado y navegación con el
SYSTEM_UI_FLAG_LOW_PROFILE
, 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, la marca se borra, y esto hace que las barras no queden atenuadas. Una vez que se haya borrado la marca, se debe restablecer la app si quieres volver a atenuar las barras.
En la figura 1, se muestra una galería de imágenes con la barra de navegación atenuada (ten en cuenta que la app de la galería) oculta completamente la barra de estado; no la atenúa). Observa que la barra de navegación (derecha lateral 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 forma 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);