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 ..?

usuario448250
fuente
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. :)

Fugogugo
fuente
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();
 }
Poli
fuente
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í .

Karan
fuente
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);
Prabh profundo
fuente
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);
Cabezas
fuente
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
}
Faxriddin Abdullayev
fuente
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);
}
Patel Vicky
fuente
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

Farruh Habibullaev
fuente
6

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

android:theme="@android:style/Theme.Translucent.NoTitleBar"
Yogendra
fuente
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)
Shangeeth Sivan
fuente
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);
Muhammad Laraib Khan
fuente
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.

Harish Gyanani
fuente
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
Mohan Munisifreddy
fuente
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"

Mudasar
fuente
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>
Oleh Liskovych
fuente
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);
}
usuario3156040
fuente
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

Jyo el olor
fuente
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);
Dhaval Jivani
fuente
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);

}
...
}
Ahamadullah Saikat
fuente
0

Utilizada en Manifest

android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"
Atif Amin
fuente
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>

fuente
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();
    }
}
Mahdi Zareei
fuente
-1
requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

fuente
¡Hola! Considere agregar algunos comentarios o explicaciones verbales de lo que está haciendo.
George