Esta lección describe cómo ocultar la barra de estado en diferentes versiones de Android. Ocultar la barra de estado (y, opcionalmente, la barra de navegación) permite que el contenido utilice más espacio de la pantalla, proporcionando así una experiencia de usuario más envolvente.

La figura 1 muestra una aplicación con una barra de estado visible:

Figura 1. Barra de estado visible.

La figura 2 muestra una app con una barra de estado oculta. Observe que la barra de acciones también está oculta. Nunca debes mostrar la barra de acciones sin la barra de estado.

Figura 2. Barra de estado oculta.

Ocultar la barra de estado en Android 4.0 e inferiores

Puede ocultar la barra de estado en Android 4.0 (nivel de API 14) e inferiores configurandoWindowManager banderas. Puedes hacerlo mediante programación o estableciendo un tema de actividad en el archivo de manifiesto de tu aplicación. Establecer un tema de actividad en el archivo de manifiesto de tu aplicación es el enfoque preferido si la barra de estado debe permanecer siempre oculta en tu aplicación (aunque estrictamente hablando, podrías anular el tema mediante programación si así lo deseas). Por ejemplo:

<application ... android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" > ...</application>

Las ventajas de utilizar un tema de actividad son las siguientes:

  • Es más fácil de mantener y menos propenso a errores que establecer una bandera mediante programación.
  • Resulta en transiciones de UI más suaves, porque el sistema tiene la información que necesita para renderizar su UI antes de instanciar la actividad principal de su aplicación.

Alternativamente, usted puede establecer programáticamente WindowManager banderas.Este enfoque hace que sea más fácil de ocultar y mostrar la barra de estado como el usuario interactúa con su aplicación:

Kotlin

class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // If the Android version is lower than Jellybean, use this call to hide // the status bar. if (Build.VERSION.SDK_INT < 16) { window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN) } setContentView(R.layout.activity_main) } ...}

Java

public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // If the Android version is lower than Jellybean, use this call to hide // the status bar. if (Build.VERSION.SDK_INT < 16) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } setContentView(R.layout.activity_main); } ...}

Cuando se establece WindowManager banderas (ya sea a través de un tema de actividad o programáticamente), las banderas permanecen en efecto a menos que su aplicación los borra.

Puedes utilizarFLAG_LAYOUT_IN_SCREENpara establecer que el diseño de tu actividad utilice la misma área de pantalla que está disponible cuando has activadoFLAG_FULLSCREEN. Esto evita que su contenido cambie de tamaño cuando la barra de estado se oculta y se muestra.

Ocultar la barra de estado en Android 4.1 y superior

Puede ocultar la barra de estado en Android 4.1 (nivel de API 16) y superior utilizando setSystemUiVisibility().setSystemUiVisibility() establece los indicadores de interfaz de usuario a nivel de vista individual; estos ajustes se agregan al nivel de ventana. El uso de setSystemUiVisibility() para establecer las banderas de la interfaz de usuario le da un control más granular sobre las barras del sistema que el uso de las banderasWindowManager. Este fragmento oculta la barra de estado:

Kotlin

// Hide the status bar.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN// Remember that you should never show the action bar if the// status bar is hidden, so hide that too if necessary.actionBar?.hide()

Java

View decorView = getWindow().getDecorView();// Hide the status bar.int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;decorView.setSystemUiVisibility(uiOptions);// Remember that you should never show the action bar if the// status bar is hidden, so hide that too if necessary.ActionBar actionBar = getActionBar();actionBar.hide();

Tenga en cuenta lo siguiente:

  • Una vez que las banderas de la UI han sido borradas (por ejemplo, al navegar fuera de la actividad), su aplicación necesita restablecerlas si desea ocultar las barras de nuevo.Ver Responder a los cambios de visibilidad de la interfaz de usuario para una discusión de cómo escuchar los cambios de visibilidad de la interfaz de usuario para que su aplicación pueda responder en consecuencia.
  • Donde se establecen los indicadores de la interfaz de usuario hace una diferencia. Si ocultas las barras del sistema en el método onCreate() de tu actividad y el usuario pulsa Inicio, las barras del sistema volverán a aparecer. Cuando el usuario reabra la actividad, onCreate() no será llamado, por lo que las barras del sistema permanecerán visibles. Si desea que los cambios de la UI del sistema persistan mientras el usuario navega dentro y fuera de su actividad, establezca los indicadores de la UI en onResume()o onWindowFocusChanged().
  • El método setSystemUiVisibility() sólo tiene efecto si la vista desde la que se llama es visible.
  • Navegar fuera de la vista hace que se borren las banderas establecidas con setSystemUiVisibility().

Hacer que el contenido aparezca detrás de la barra de estado

En Android 4.En Android 4.1 y superior, puede configurar el contenido de su aplicación para que aparezca detrás de la barra de estado, de modo que el contenido no cambie de tamaño cuando la barra de estado se oculte o se muestre.Para ello, utiliceSYSTEM_UI_FLAG_LAYOUT_FULLSCREEN.Es posible que también tenga que utilizarSYSTEM_UI_FLAG_LAYOUT_STABLE para ayudar a su aplicación a mantener un diseño estable.

Cuando utilice este enfoque, se convierte en su responsabilidad asegurarse de que las partes críticas de la interfaz de usuario de su aplicación (por ejemplo, los controles incorporados en una aplicación de Mapas) no acaben cubiertos por las barras del sistema. Esto podría hacer que tu aplicación fuera inutilizable. En la mayoría de los casos se puede manejar esto añadiendo el atributo android:fitsSystemWindows a su archivo de diseño XML, establecido entrue. Esto ajusta el relleno del padre ViewGroup para dejar espacio para las ventanas del sistema. Esto es suficiente para la mayoría de las aplicaciones.

En algunos casos, sin embargo, es posible que tenga que modificar el relleno por defecto para obtener el diseño deseado para su aplicación. Para manipular directamente la disposición del contenido en relación con las barras del sistema (que ocupan un espacio conocido como «inserciones de contenido» de la ventana), anule el método fitSystemWindows(Rect insets).El método fitSystemWindows() es llamado por la jerarquía de la vista cuando las inserciones de contenido de una ventana han cambiado, para permitir que la ventana ajuste su contenido en consecuencia. Al anular este método, puedes manejar las inserciones (y por lo tanto el diseño de tu aplicación) como quieras.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.