Cómo ocultar la barra de navegación

En esta lección, se describe cómo ocultar la barra de navegación, que se presentó en Android 4.0 (nivel de API 14)

Aunque esta lección se centra en ocultar en la barra de navegación, debes diseñar tu app de modo que oculte la barra de estado al mismo tiempo, como se describe en Cómo ocultar la barra de estado. Ocultar las barras de navegación y de estado (y, al mismo tiempo, acceder a ellas) permite que el contenido use todo el espacio de la pantalla, lo que proporciona una experiencia más inmersiva la experiencia del usuario.

barras del sistema

Figura 1: Barra de navegación

Cómo ocultar la barra de navegación

Para ocultar la barra de navegación, usa SYSTEM_UI_FLAG_HIDE_NAVIGATION. Este fragmento oculta ambos la barra de navegación y la barra de estado:

Kotlin

window.decorView.apply {
    // Hide both the navigation bar and the status bar.
    // SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
    // a general rule, you should design your app to hide the status bar whenever you
    // hide the navigation bar.
    systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN
}

Java

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);

Ten en cuenta lo siguiente:

  • Con este enfoque, tocar en cualquier lugar de la pantalla activa la barra de navegación (y la barra de estado) para volver a aparecer y permanecer visible. La interacción del usuario hace que las marcas borrar.
  • Una vez que se hayan borrado las marcas, tu app deberá restablecerlas si quieres ocultar las barras de nuevo. Consulta Cómo responder a los cambios de visibilidad de la IU para un sobre cómo detectar los cambios de visibilidad de la IU para que tu app pueda responder en consecuencia.
  • El lugar en el que estableces las marcas de la IU hace la diferencia. Si ocultas las barras del sistema en el archivo onCreate() y el usuario presiona Inicio, las barras del sistema volverá a aparecer. Cuando el usuario vuelve a abrir la actividad, onCreate(). no se llamará, por lo que las barras del sistema permanecerán visibles. Si quieres que la IU del sistema cambie a persistan a medida que el usuario entre y salga de tu actividad, configura marcas de la IU en onResume() o onWindowFocusChanged().
  • Solo el método setSystemUiVisibility() tendrá efecto si la vista desde la que lo llamas está visible.
  • Si te alejas de la vista, se generan marcas se estableció con setSystemUiVisibility() que se borrará.

Cómo hacer que el contenido aparezca detrás de la barra de navegación

En Android 4.1 y versiones posteriores, puedes configurar el contenido de tu aplicación para que aparezca la barra de navegación, de modo que el contenido no cambie de tamaño cuando la barra de navegación se oculta y programas. Para hacerlo, usa SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION También es posible que debas usar SYSTEM_UI_FLAG_LAYOUT_STABLE para que tu app mantenga una y un diseño estable.

Cuando usas este enfoque, es tu responsabilidad garantizar que las partes críticas de la IU de tu app no terminen cubiertas por las barras del sistema. Para ver más debate sobre este tema, consulta el Cómo ocultar la lección Barra de estado