Estoy creando una aplicación de Android para que la barra de navegación y la barra de título tengan que estar ocultas. Puedo hacerlo desde la actividad como se explica en developer.android.com.

Pero necesito lograr esto en toda mi aplicación definiéndolo solo una vez.

Desde algún foro, el código siguiente lo hará:

 <style name="FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

Apliqué este estilo a mi manifiesto y explosión, la barra de título desapareció ... Pero lamentablemente la barra de navegación permanece ... ¿Cómo podríamos eliminar la barra de navegación también así?

Por favor, ayuda

0
Karthik CP 2 mar. 2018 a las 11:05

4 respuestas

La mejor respuesta

¿Quizás forzar siempre que modo inmersivo logre lo que necesita? Puede extender Activity o AppCompatActivity y agregar el siguiente código (tomado de esa página):

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    }
}

De esta manera, cada vez que la ventana tenga foco, tendrá una inmersión adhesiva que hará que cubra las barras de navegación y estado. Sin embargo, no estoy 100% seguro de lo que quieres decir con "barra de título".

Entonces, haz una nueva clase. La llamada es una actividad inmersiva, p.

public class ImmersiveActivity extends AppCompatActivity {

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    }
}
}

Ahora, cuando quieras hacer una nueva actividad simplemente haz:

public class SomeOtherActivity extends ImmersiveActivity {

}

Y de esta manera, cada nueva actividad basada en esta clase debería iniciarse automáticamente en modo inmersivo (cuando tiene foco).

1
Dirk Conrad Coetsee 2 mar. 2018 a las 09:46

En tu AndroidManifest.xml

Agregue esto a la etiqueta de la aplicación:

 <application
    ....
    android:theme="@style/FullScreen">

Y en styles.xml:

<resources>
<style name="FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>
</resources>
1
Dimitar Dihanov 2 mar. 2018 a las 08:11

Intente incluir en Actividad en manifest.xml

<activity
        ...
        android:theme="@style/FullScreen">
...
1
nhonnq 2 mar. 2018 a las 08:11

En la actividad onCreate() agregue las líneas debajo de setContentView() como

  getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
  setContentView(R.layout.activity_main);
1
OmiK 2 mar. 2018 a las 08:08