Cómo ocultar la barra de estado en Android


103

Remití este enlace . En eso, si el usuario hace clic en EditText (por ejemplo, Para:) en ese momento, el teclado se abrirá y, al mismo tiempo, el usuario podrá desplazarse para ver todas las vistas restantes (por ejemplo: redactar, asunto, botón enviar) en esa pantalla. De manera similar, en mi aplicación tengo una actividad en la que tengo algunos widgets o vistas. Supongamos que si el usuario hace clic en Editar texto que está en mi Actividad, entonces el teclado aparece y puedo desplazarme para ver las vistas restantes. Pero si doy este atributo android:theme="@android:style/Theme.NoTitleBar.Fullscreen"en el manifiesto, no pude desplazarme para ver las vistas restantes, pero si doy el atributoandroid:theme="@android:style/Theme.NoTitleBar"así en el manifiesto, puedo desplazarme para ver la vista restante, pero hay una barra de estado en esa pantalla, aquí quiero pantalla completa e incluso si el teclado aparece, puedo desplazarme para ver las vistas restantes ...? ¿Qué cambios tengo que hacer para esto ..?


3
@ user448250: tenga en cuenta que no puede ocultar la barra de estado en Android 3.0, y existe una buena posibilidad de que no pueda ocultar la barra de estado en el futuro. En Android 3.0, la barra de estado alberga los botones ATRÁS e INICIO, por lo que la barra de estado debe estar siempre disponible.
CommonsWare

Me las arreglé para ocultar tanto el título como la barra de estado en el emulador con 3.0, nivel de API 11.
erdomester

La pantalla completa aún debería estar permitida, el usuario generalmente no quiere ver la barra de estado cuando juega un juego en pantalla completa.
GMsoF

@ user448250 ¿Has descubierto esto alguna vez?
Tiago

¿Qué es actividad en absoluto? ¿Es algún archivo xml en la carpeta de su sitio web?
Nebular Dust

Respuestas:


171

Escribe esto en tu actividad

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

Consulta el documento aquí: https://developer.android.com/training/system-ui/status.html

y su aplicación pasará a pantalla completa. sin barra de estado, sin barra de título. :)


29
Tenga en cuenta que esto no funcionará si su superclase de actividad llama a setContentView en el método onCreate; la aplicación se cerrará con una excepción.
Ben Clayton

1
@Ron Estaba probando en el nivel de API 8. ¿Es posible que el comportamiento sea diferente en otros niveles?
Ben Clayton

¿Es esto válido para todas las versiones desde la 2.3.xa la 4.x?
Kostadin

1
Esto aún evita que la pantalla se desplace cuando se muestra el teclado del software.
Tiago

3
Úselo antes super.onCreate(savedInstanceState);si falla
David

19
 if (Build.VERSION.SDK_INT < 16) {
   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
 } else {
     View decorView = getWindow().getDecorView();
      int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
      decorView.setSystemUiVisibility(uiOptions);
      ActionBar actionBar = getActionBar();
      actionBar.hide();
 }

3
He notado que cuando utilizo este método, mostrar el teclado virtual mueve las vistas sobre editText, en lugar de cambiar el tamaño de las cosas. ¿Cómo puedo solucionar esto?
desarrollador de Android

19

Use el tema "Theme.NoTitleBar.Fullscreen"e intente configurar "android:windowSoftInputMode=adjustResize"la actividad en AndroidManifest.xml.Puede encontrar detalles aquí .


Con el enfoque anterior, mi barra de estado se puede ocultar cuando la aplicación se ejecuta en pantalla completa, sin embargo, todavía puedo ver la barra de estado mientras deslizo hacia abajo la página. ¿Hay alguna forma si no quiero la barra de estado en absoluto?
Hazel Wang

13

Use este código para ocultar la barra de estado en su aplicación y sea fácil de usar

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

12

Si necesita esto en una actividad, debe poner onCreate, antes de setContentView:

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.your_screen);

1
De esta manera, el teclado cubre el campo de entrada en la vista web.
Allen Vork

@AllenVork ¿alguna solución?
Ishaan Kumar

12

Agregue esto a su clase de actividad

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(
                        WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                        WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);
    // some your code
}

8

Utilice esto para su Activity.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

6
void hideStatusBar() {
        if (Build.VERSION.SDK_INT < 16) {
           getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        } else {
            View decorView = getWindow().getDecorView();
            int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
            decorView.setSystemUiVisibility(uiOptions);
        }
    }

Puede utilizar este método para ocultar la barra de estado. Y esto también es importante para ocultar la barra de acciones. En este caso, puede getSupportActionBar (). Hide () si ha extendido la actividad desde la biblioteca de soporte como Appcompat o simplemente puede llamar a getActionBar (). Hide () después del método mencionado anteriormente. Gracias


6

Cambie el tema de la aplicación en el manifest.xmlarchivo.

android:theme="@android:style/Theme.Translucent.NoTitleBar"

Curiosamente, esto muestra una barra naranja en la parte superior de la pantalla. Sin embargo, la barra de notificaciones está oculta.
Danish Ashfaq

6

Si está ocultando la barra de estado, haga esto en onCreate (para Actividad) y onCreateView / onViewCreated (para Fragmento)

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

Y no olvide quitar la bandera al salir de la actividad o, de lo contrario, tendrá la pantalla completa en toda su aplicación después de visitar esta actividad. Para borrar, haga esto en su onDestroy (para Actividad) o onDestroyView (para Fragmento)

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

5

Utilice este código:

requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.youractivityxmlname);

4

Este código oculta la barra de estado.

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

para ocultar la barra de acción escribe esta línea: -

requestWindowFeature(Window.FEATURE_NO_TITLE);

ambas líneas se pueden escribir colectivamente para ocultar la barra de acción y la barra de estado. todas estas líneas deben escribirse antes de setContentViewllamar al onCreatemétodo en el método.


Funciona maravillosamente. ¡Gracias!
Joshua Pinter

3

En AndroidManifest.xml -> dentro de la actividad que desea usar, agregue lo siguiente:

android:theme="@style/Theme.AppCompat.Light.NoActionBar"
//this is for hiding action bar

y en MainActivity.java -> dentro del método onCreate (), agregue lo siguiente:

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//this is for hiding status bar

3

Puede ocultar usando styles.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>
<style name="HiddenTitleTheme" parent="AppTheme">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

solo llama a esto en tu manifiesto así android:theme="@style/HiddenTitleTheme"


3

Puede ocultar la barra de estado configurando su color para que sea transparente usando xml . Agregue el elemento statusBarColor a su tema de actividad:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

Por favor, agregue un código de explicación, solo las respuestas son un poco confusas para los demás
Ram Ghadiyaram

2
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setTheme(R.style.Theme_AppCompat_Light_NoActionBar);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN
    , WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity__splash_screen);
}

Si bien este código puede resolver la pregunta, incluir una explicación de cómo y por qué esto resuelve el problema realmente ayudaría a mejorar la calidad de su publicación y probablemente resultaría en más votos a favor. Recuerde que está respondiendo la pregunta a los lectores en el futuro, no solo a la persona que pregunta ahora. Por favor, editar su respuesta para agregar explicaciones y dar una indicación de lo que se aplican limitaciones y supuestos.
Dharman

No tenía mucha idea de qué es exactamente AppCompat, solo lo estaba usando. Y estas tres líneas hicieron el trabajo.
user3156040

Lástima que la propia documentación de Google, como siempre, es incorrecta sobre cómo lograrlo. Quizás deberían copiar y pegar este código.
zeeshan


0

No podemos evitar que el estado aparezca en modo de pantalla completa en (4.4+) kitkat o dispositivos superiores, así que intente un truco para bloquear la expansión de la barra de estado.

La solución es bastante grande, así que aquí está el enlace de SO:

StackOverflow: oculta la barra de estado en Android 4.4+ o kitkat con pantalla completa


Creo que estás equivocado, echa un vistazo a la información oficial sobre cómo ocultar la barra de estado developer.android.com/training/system-ui/status.html
Jose Ricardo Citerio Alcala

José, verificaré la información en el enlace dado y actualizaré la respuesta si es necesario. Esta pregunta / respuesta se agregó hace un año cuando no había una solución oficial para este escenario. Puede estar en la próxima versión o las versiones de google / android han agregado la API / método para la misma. Si han proporcionado la solución, entonces es un placer. ¡Gracias!
Jyo the Whiff

0

Esta solución funciona para mí :)

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (Build.VERSION.SDK_INT >= 19) {
           getWindow().setFlags(AccessibilityNodeInfoCompat.ACTION_NEXT_HTML_ELEMENT, AccessibilityNodeInfoCompat.ACTION_NEXT_HTML_ELEMENT);
           getWindow().getDecorView().setSystemUiVisibility(3328);
    }else{
           requestWindowFeature(Window.FEATURE_NO_TITLE);
           this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

    DataBindingUtil.setContentView(this, R.layout.activity_hse_video_details);

0
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);
    } else {
       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();
    }

    setContentView(R.layout.activity_main);

}
...
}

0

Utilizada en Manifest

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

Probablemente depende del tema. En mi caso, ocurrió una excepción: "java.lang.IllegalStateException: Necesitas usar un tema Theme.AppCompat (o descendiente) con esta actividad".
CoolMind

0

En res -> valores -> styles.xml

Dentro de la etiqueta de cuerpo de estilo pegar

<item name="android:windowTranslucentStatus" tools:targetApi="kitkat">true</item>

0

Si consulta los Documentos de Google , puede utilizar este método para Android 4.1 y superior, llame a este método antes de setContentView ()

public void hideStatusBar() {
    View view = getWindow().getDecorView();
    int uiOption = View.SYSTEM_UI_FLAG_FULLSCREEN;
    view.setSystemUiVisibility(uiOption);
    ActionBar actionBar = getActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
}

-1
requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

¡Hola! Considere agregar algunos comentarios o explicaciones verbales de lo que está haciendo.
George
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.