Como ocultar a barra de status no Android


103

Referi este link . Nesse caso, se o usuário clicar em EditText (por ex Para:), nesse momento o teclado será exibido e, ao mesmo tempo, o usuário poderá rolar para ver todas as visualizações restantes (ex: escrever, assunto, botão enviar) em aquela tela. Da mesma forma, em meu aplicativo, tenho uma atividade em que estou tendo alguns widgets ou visualizações. Suponha que se o usuário clicar em Edittext, que está em minha Activity, o teclado está saindo e eu posso rolar para ver as visualizações restantes. Mas se eu der esse atributo android:theme="@android:style/Theme.NoTitleBar.Fullscreen"no manifesto, não consigo rolar para ver as visualizações restantes, mas se eu der o atributoandroid:theme="@android:style/Theme.NoTitleBar"assim, no manifesto, posso rolar para ver as visualizações restantes, mas há uma barra de status nessa tela, aqui eu quero a tela inteira e mesmo se o teclado estiver aberto, posso rolar para ver as visualizações restantes ..? quais mudanças eu tenho que fazer para isso ..?


3
@ user448250: Observe que você não pode ocultar a barra de status no Android 3.0, e há uma boa chance de que você não consiga ocultar a barra de status daqui para frente. No Android 3.0, a barra de status abriga os botões VOLTAR e INÍCIO, portanto, a barra de status precisa estar sempre disponível.
CommonsWare

Acabei de conseguir ocultar a barra de título e de status no emulador com 3.0, API de nível 11.
erdomester

A tela cheia ainda deve ser permitida, o usuário geralmente não quer ver a barra de status ao jogar o jogo em tela cheia.
GMsoF

@ user448250 Você já descobriu isso?
Tiago

O que é atividade afinal? É algum arquivo xml na pasta do seu site?
Nebular Dust

Respostas:


170

Escreva isso em sua atividade

@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);
}

Verifique a documentação aqui: https://developer.android.com/training/system-ui/status.html

e seu aplicativo ficará em tela cheia. sem barra de status, sem barra de título. :)


29
Observe que isso não funcionará se sua superclasse de atividade chamar setContentView no método onCreate - o aplicativo será encerrado com uma exceção.
Ben Clayton,

1
@Ron Eu estava testando na API nível 8. É possível que o comportamento seja diferente em outros níveis?
Ben Clayton

Isso é válido para todas as versões de 2.3.x a 4.x?
Kostadin

1
Isso ainda impede que a tela role quando o teclado do software está sendo mostrado.
Tiago

2
Use-o antes super.onCreate(savedInstanceState);se travar
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
Percebi que quando uso esse método, mostrar o teclado virtual move as visualizações acima de editText, em vez de redimensionar as coisas. Como faço para corrigir isso?
desenvolvedor Android

19

Use o tema "Theme.NoTitleBar.Fullscreen"e tente definir "android:windowSoftInputMode=adjustResize"para a atividade em AndroidManifest.xml.Você pode encontrar detalhes aqui .


Com a abordagem acima, minha barra de status pode ser ocultada quando o aplicativo está sendo executado em tela cheia; no entanto, ainda posso ver a barra de status enquanto deslizo para baixo na página. Existe uma maneira se eu não quiser a barra de status?
Hazel Wang

13

Use este código para ocultar a barra de status em seu aplicativo e é fácil de usar

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

12

Se você precisar disso em uma atividade, deve colocar 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
Desta forma, o teclado cobre o campo de entrada no webview.
Allen Vork

@AllenVork alguma solução?
Ishaan Kumar

12

Adicione isso à sua classe de atividade

@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

Use isso para o seu 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);
        }
    }

Você pode usar este método para ocultar a barra de status. E isso é importante para ocultar a barra de ação também. Nesse caso, você pode getSupportActionBar (). Hide () se tiver estendido a atividade da biblioteca de suporte como Appcompat ou pode simplesmente chamar getActionBar (). Hide () após o método mencionado acima. obrigado


6

Altere o tema do aplicativo no manifest.xml arquivo.

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

Estranhamente, isso mostra uma barra laranja no topo da tela. A barra de notificação está oculta.
Dinamarquês Ashfaq

6

Se você estiver ocultando a barra de status, faça isso em onCreate (para Activity) e onCreateView / onViewCreated (para Fragment)

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

E não se esqueça de limpar a bandeira ao sair da atividade ou então você terá a tela inteira em todo o seu aplicativo após visitar esta atividade. Para limpar, faça isso em seu onDestroy (para Activity) ou onDestroyView (para Fragment)

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

5

Use 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 a barra de status.

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

para ocultar a barra de ação, escreva esta linha: -

requestWindowFeature(Window.FEATURE_NO_TITLE);

ambas as linhas podem ser escritas coletivamente para ocultar a barra de ação e a barra de status. todas essas linhas devem ser escritas antes da setContentViewchamada do onCreatemétodo no método.


Funciona lindamente. Obrigado!
Joshua Pinter

3

Em AndroidManifest.xml -> dentro da atividade que você deseja usar, adicione o seguinte:

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

e em MainActivity.java -> dentro do método onCreate (), adicione o seguinte:

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

3

Você pode se esconder 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>

apenas chame isso em seu manifesto assim android:theme="@style/HiddenTitleTheme"


2

Você pode ocultar a barra de status, definindo sua cor para transperant usando xml . Adicione o item statusBarColor ao seu tema de atividade:

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

pls adicione algum código de explicação, apenas as respostas são um pouco confusas para os outros
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);
}

Embora este código possa resolver a questão, incluir uma explicação de como e por que isso resolve o problema realmente ajudaria a melhorar a qualidade da sua postagem e provavelmente resultaria em mais votos positivos. Lembre-se de que você está respondendo às perguntas dos leitores no futuro, não apenas da pessoa que está perguntando agora. Por favor edite sua resposta para adicionar explicações e dar uma indicação do que limitações e premissas se aplicam.
Dharman de

Eu não tinha muita ideia do que exatamente é o AppCompat, apenas o utilizava. E essas três linhas fizeram o trabalho.
user3156040

Pena é que a própria documentação do Google, como sempre, está incorreta sobre como fazer isso. Talvez eles devam copiar e colar este código.
zeeshan


0

Não podemos evitar que o status apareça no modo de tela inteira em dispositivos (4.4+) kitkat ou superiores, então tente um hack para bloquear a expansão da barra de status.

A solução é muito grande, então aqui está o link do SO:

StackOverflow: ocultar barra de status no Android 4.4+ ou kitkat com tela cheia


Acho que você está errado, por favor, dê uma olhada nas informações oficiais sobre como ocultar a barra de status developer.android.com/training/system-ui/status.html
Jose Ricardo Citerio Alcala

José, irei verificar as informações no link fornecido e atualizarei a resposta se necessário. Esta pergunta / resposta adicionada há um ano, quando não havia uma solução oficial para este cenário. Pode estar no próximo lançamento ou nas versões google / android adicionaram a API / método para o mesmo. Se eles forneceram a solução, é uma delícia. Obrigado!
Jyo o Whiff

0

Esta solução funciona para mim :)

@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

Usado em Manifest

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

Provavelmente depende do tema. No meu caso, ocorreu uma exceção: "java.lang.IllegalStateException: Você precisa usar um tema Theme.AppCompat (ou descendente) com esta atividade."
CoolMind

0

Sob res -> valores -> estilos.xml

Cole dentro da tag de corpo de estilo

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

0

Se você consultar os documentos do Google, pode usar este método para android 4.1 e superior, chame 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);

Olá! Considere adicionar alguns comentários ou explicações verbais sobre o que você está fazendo.
George
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.