Come nascondere la barra di stato in Android


103

Ho fatto riferimento a questo collegamento . In quanto se l'utente fa clic su Modifica testo (ad esempio A:) in quel momento verrà visualizzata la tastiera e allo stesso tempo l'utente potrà scorrere per vedere tutte le visualizzazioni rimanenti (ad esempio: componi, oggetto, pulsante di invio) in quello schermo. Allo stesso modo nella mia app ho un'attività in quanto ho alcuni widget o viste. Supponiamo che se l'utente fa clic su Edittext che si trova nella mia attività, la tastiera viene visualizzata e posso essere in grado di scorrere per vedere le visualizzazioni rimanenti. Ma se fornisco questo attributo android:theme="@android:style/Theme.NoTitleBar.Fullscreen"nel manifest non sono stato in grado di scorrere per vedere le visualizzazioni rimanenti ma se fornisco l'attributoandroid:theme="@android:style/Theme.NoTitleBar"come questo in manifest posso essere in grado di scorrere per vedere la visualizzazione rimanente ma c'è la barra di stato in quella schermata, qui voglio lo schermo intero e anche se la tastiera è spuntata posso scorrere per vedere le visualizzazioni rimanenti ..? quali modifiche devo fare per questo ..?


3
@ user448250: Nota che non puoi nascondere la barra di stato in Android 3.0, e c'è una buona probabilità che non sarai in grado di nascondere la barra di stato in futuro. In Android 3.0, la barra di stato ospita i pulsanti BACK e HOME, quindi la barra di stato deve essere sempre disponibile.
CommonsWare

Sono appena riuscito a nascondere sia il titolo che la barra di stato sull'emulatore con 3.0, livello API 11.
erdomester

Lo schermo intero dovrebbe essere ancora consentito, l'utente di solito non vuole vedere la barra di stato durante il gioco a schermo intero.
GMsoF

@ user448250 L'hai mai scoperto?
Tiago

Cos'è l'attività? È un file xml nella cartella del tuo sito web?
Polvere nebulosa

Risposte:


171

Scrivilo nella tua attività

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

Controlla il documento qui: https://developer.android.com/training/system-ui/status.html

e la tua app verrà visualizzata a schermo intero. nessuna barra di stato, nessuna barra del titolo. :)


29
Nota che questo non funzionerà se la tua superclasse di attività chiama setContentView nel metodo onCreate: l'app si chiuderà con un'eccezione.
Ben Clayton

1
@Ron stavo testando sul livello API 8. È possibile che il comportamento sia diverso su altri livelli?
Ben Clayton,

È valido per tutte le versioni dalla 2.3.x alla 4.x?
Kostadin

1
Ciò impedisce comunque lo scorrimento dello schermo quando viene visualizzata la tastiera del software.
Tiago

3
Usalo prima super.onCreate(savedInstanceState);se si blocca
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
Ho notato che quando utilizzo questo metodo, mostrare la tastiera virtuale sposta le viste sopra editText, invece di ridimensionare le cose. Come lo risolvo?
sviluppatore Android

19

Usa il tema "Theme.NoTitleBar.Fullscreen"e prova le impostazioni "android:windowSoftInputMode=adjustResize"per l'attività in AndroidManifest.xml.Puoi trovare i dettagli qui .


Con l'approccio di cui sopra, la mia barra di stato può essere nascosta quando l'app è in esecuzione a schermo intero, tuttavia, posso ancora vedere la barra di stato mentre scorro verso il basso la pagina. C'è un modo se non voglio affatto la barra di stato?
Hazel Wang,

13

Usa questo codice per nascondere la barra di stato nella tua app e facile da usare

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

12

Se hai bisogno di questo in un'attività, devi inserire onCreate, prima di setContentView:

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

setContentView(R.layout.your_screen);

1
In questo modo, la tastiera copre il campo di input in webview.
Allen Vork

@AllenVork qualche soluzione?
Ishaan Kumar il

12

Aggiungilo alla tua lezione di attività

@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

Usa questo per il tuo 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);
        }
    }

È possibile utilizzare questo metodo per nascondere la barra di stato. E questo è importante anche per nascondere la barra delle azioni. In questo caso, puoi getSupportActionBar (). Hide () se hai esteso l'attività dalla libreria di supporto come Appcompat o puoi semplicemente chiamare getActionBar (). Hide () dopo il metodo menzionato sopra. Grazie


6

Cambia il tema dell'applicazione nel manifest.xmlfile.

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

Stranamente questo mostra una barra arancione nella parte superiore dello schermo. La barra delle notifiche è però nascosta.
Danese Ashfaq

6

Se stai nascondendo la barra di stato, fallo in onCreate (per Activity) e onCreateView / onViewCreated (per Fragment)

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

E non dimenticare di cancellare il flag quando esci dall'attività, altrimenti avrai lo schermo intero nella tua intera app dopo aver visitato questa attività. Per cancellare fallo nel tuo onDestroy (for Activity) o onDestroyView (for Fragment)

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

5

Usa questo codice:

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

4

Questo codice nasconde la barra di stato.

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

per nascondere la barra delle azioni scrivi questa riga: -

requestWindowFeature(Window.FEATURE_NO_TITLE);

entrambe le righe possono essere scritte collettivamente per nascondere la barra delle azioni e la barra di stato. tutte queste righe devono essere scritte prima della setContentViewchiamata del onCreatemetodo in method.


Funziona magnificamente. Grazie!
Joshua Pinter

3

In AndroidManifest.xml -> all'interno dell'attività che desideri utilizzare, aggiungi quanto segue:

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

e in MainActivity.java -> all'interno del metodo onCreate (), aggiungi quanto segue:

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

3

Puoi nasconderti 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>

chiamalo nel tuo manifest in questo modo android:theme="@style/HiddenTitleTheme"


3

Puoi nascondere la barra di stato impostando il suo colore su trasparente usando xml . Aggiungi l' elemento statusBarColor al tema dell'attività:

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

per favore aggiungi un codice di spiegazione solo le risposte sono un po 'confuse per gli altri
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);
}

Sebbene questo codice possa risolvere la domanda, inclusa una spiegazione di come e perché questo risolve il problema aiuterebbe davvero a migliorare la qualità del tuo post e probabilmente si tradurrebbe in più voti positivi. Ricorda che stai rispondendo alla domanda per i lettori in futuro, non solo alla persona che chiede ora. Si prega di modificare la risposta per aggiungere spiegazioni e dare un'indicazione di ciò si applicano le limitazioni e le assunzioni.
Dharman

Non avevo idea di cosa fosse esattamente AppCompat, l'ho solo usato. E queste tre righe hanno funzionato.
user3156040

Il peccato è che la documentazione di Google, come sempre, non è corretta su come ottenere questo risultato. Forse dovrebbero copiare e incollare questo codice.
zeeshan


0

Non possiamo impedire che lo stato appaia in modalità a schermo intero in (4.4+) kitkat o dispositivi superiori, quindi prova un hack per bloccare l'espansione della barra di stato.

La soluzione è piuttosto grande, quindi ecco il link di SO:

StackOverflow: nascondi la barra di stato in Android 4.4+ o kitkat con schermo intero


Penso che ti sbagli, dai un'occhiata alle informazioni ufficiali su come nascondere la barra di stato developer.android.com/training/system-ui/status.html
Jose Ricardo Citerio Alcala

Jose, controllerò le informazioni sul collegamento fornito e aggiornerò la risposta se necessario. Questa domanda / risposta è stata aggiunta un anno fa quando non c'era una soluzione ufficiale per questo scenario. Potrebbe essere nella prossima versione o versioni google / android hanno aggiunto l'API / il metodo per lo stesso. Se hanno fornito la soluzione, allora è una delizia. Grazie!
Jyo the Whiff

0

Questa soluzione funziona per me :)

@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

Usato in Manifest

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

Probabilmente dipende dal tema. Nel mio caso si è verificata un'eccezione: "java.lang.IllegalStateException: è necessario utilizzare un tema Theme.AppCompat (o discendente) con questa attività."
CoolMind

0

In res -> values ​​-> styles.xml

All'interno del tag del corpo dello stile incolla

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

0

Se fai riferimento a Google Documents puoi utilizzare questo metodo per Android 4.1 e versioni successive, chiama questo metodo prima di 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);

Ciao! Considera l'idea di aggiungere alcuni commenti o spiegazioni verbali di ciò che stai facendo.
George,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.