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

user448250
fonte
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. :)

Fugogugo
fonte
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();
 }
Bobby
fonte
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 .

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

Farruh Habibullaev
fonte
6

Altere o tema do aplicativo no manifest.xml arquivo.

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

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

Mudasar
fonte
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>
Oleh Liskovych
fonte
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);
}
user3156040
fonte
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

Jyo o Whiff
fonte
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);
Dhaval Jivani
fonte
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
fonte
0

Usado em Manifest

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

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

fonte
Olá! Considere adicionar alguns comentários ou explicações verbais sobre o que você está fazendo.
George