Comment masquer la barre d'état sous Android


103

J'ai référé ce lien . En ce sens que si l'utilisateur clique sur EditText (par ex To :), le clavier sera alors sorti et en même temps l'utilisateur pourra faire défiler pour voir toutes les vues restantes (ex: composer, objet, envoyer bouton) dans cet écran. De même, dans mon application, j'ai une activité en ce sens que j'ai des widgets ou des vues. Supposons que si l'utilisateur clique sur Edittext qui se trouve dans mon activité, le clavier apparaît et je peux faire défiler pour voir les vues restantes. Mais si je donne cet attribut android:theme="@android:style/Theme.NoTitleBar.Fullscreen"dans le manifeste, je n'ai pas pu faire défiler pour voir les vues restantes mais si donner l'attributandroid:theme="@android:style/Theme.NoTitleBar"comme ça dans le manifeste, je peux faire défiler pour voir la vue restante mais il y a une barre d'état dans cet écran, ici je veux le plein écran et même si le clavier est sorti, je peux faire défiler pour voir les vues restantes ..? quels changements dois-je faire pour cela ..?


3
@ user448250: notez que vous ne pouvez pas masquer la barre d'état dans Android 3.0 et qu'il y a de bonnes chances que vous ne puissiez pas masquer la barre d'état à l'avenir. Sous Android 3.0, la barre d'état contient les boutons RETOUR et ACCUEIL, la barre d'état doit donc être toujours disponible.
CommonsWare

Je viens de réussir à masquer à la fois le titre et la barre d'état sur l'émulateur avec 3.0, niveau d'API 11.
erdomester

Le plein écran doit toujours être autorisé, l'utilisateur ne souhaite généralement pas voir la barre d'état lorsqu'il joue à un jeu en plein écran.
GMsoF

@ user448250 Avez-vous déjà découvert cela?
Tiago

Qu'est-ce que l'activité? Est-ce un fichier xml dans le dossier de votre site Web?
Nebular Dust

Réponses:


171

Écrivez ceci dans votre activité

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

Consultez Doc ici: https://developer.android.com/training/system-ui/status.html

et votre application passera en plein écran. pas de barre d'état, pas de barre de titre. :)


29
Notez que cela ne fonctionnera pas si votre superclasse d'activité appelle setContentView dans la méthode onCreate - l'application se fermera avec une exception.
Ben Clayton

1
@Ron Je testais au niveau 8 de l'API. Il est possible que le comportement soit différent à d'autres niveaux?
Ben Clayton

Est-ce valable pour toutes les versions de 2.3.x à 4.x?
Kostadin le

1
Cela empêche toujours l'écran de défiler lorsque le clavier logiciel est affiché.
Tiago

3
Utilisez-le avant super.onCreate(savedInstanceState);s'il plante
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
J'ai remarqué que lorsque j'utilise cette méthode, l'affichage du clavier virtuel déplace les vues au-dessus de editText, au lieu de redimensionner les choses. Comment puis-je réparer ça?
développeur android

19

Utilisez le thème "Theme.NoTitleBar.Fullscreen"et essayez de définir "android:windowSoftInputMode=adjustResize"l'activité dans AndroidManifest.xml.Vous pouvez trouver des détails ici .


Avec l'approche ci-dessus, ma barre d'état peut être masquée lorsque l'application fonctionne en plein écran, cependant, je peux toujours voir la barre d'état pendant que je glisse vers le bas de la page. Y a-t-il un moyen si je ne veux pas du tout la barre d'état?
Hazel Wang le

14

Utilisez ce code pour masquer la barre d'état dans votre application et facile à utiliser

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

12

Si vous en avez besoin dans une activité, vous devez mettre onCreate, avant setContentView:

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

setContentView(R.layout.your_screen);

1
De cette façon, le clavier couvre le champ de saisie dans la vue Web.
Allen Vork

@AllenVork une solution?
Ishaan Kumar le

12

Ajoutez ceci à votre classe d'activité

@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

Utilisez ceci pour votre 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);
        }
    }

Vous pouvez utiliser cette méthode pour masquer la barre d'état. Et ceci est également important pour masquer la barre d'action. Dans ce cas, vous pouvez getSupportActionBar (). Hide () si vous avez étendu l'activité de la bibliothèque de support comme Appcompat ou vous pouvez simplement appeler getActionBar (). Hide () après la méthode mentionnée ci-dessus. Merci


6

Changez le thème de l'application dans le manifest.xmlfichier.

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

Curieusement, cela montre une barre orange en haut de l'écran. La barre de notification est cependant masquée.
Danish Ashfaq

6

Si vous masquez la barre d'état, faites-le dans onCreate (pour Activity) et onCreateView / onViewCreated (pour Fragment)

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

Et n'oubliez pas d'effacer le drapeau lorsque vous quittez l'activité, sinon vous aurez le plein écran dans toute votre application après avoir visité cette activité. Pour effacer, faites cela dans votre onDestroy (pour l'activité) ou onDestroyView (pour le fragment)

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

5

Utilisez ce code:

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

4

Ce code masque la barre d'état.

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

pour masquer la barre d'action, écrivez cette ligne: -

requestWindowFeature(Window.FEATURE_NO_TITLE);

les deux lignes peuvent être écrites collectivement pour masquer la barre d'action et la barre d'état. toutes ces lignes doivent être écrites avant l' setContentViewappel de onCreateméthode dans method.


Fonctionne à merveille. Merci!
Joshua Pinter

3

Dans AndroidManifest.xml -> dans l'activité que vous souhaitez utiliser, ajoutez ce qui suit:

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

et dans MainActivity.java -> dans la méthode onCreate (), ajoutez ce qui suit:

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

3

Vous pouvez masquer en utilisant 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>

appelle ça dans ton manifeste comme ça android:theme="@style/HiddenTitleTheme"


3

Vous pouvez masquer la barre d'état en définissant sa couleur sur transperant à l'aide de xml . Ajoutez un élément statusBarColor à votre thème d'activité:

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

pls ajouter un code d'explication, seules les réponses sont un peu déroutantes pour les autres
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);
}

Bien que ce code puisse résoudre la question, inclure une explication sur comment et pourquoi cela résout le problème aiderait vraiment à améliorer la qualité de votre publication et entraînerait probablement plus de votes à la hausse. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, pas seulement à la personne qui la pose maintenant. Veuillez modifier votre réponse pour ajouter des explications et donner une indication des limites et des hypothèses applicables.
Dharman

Je n'avais pas beaucoup d'idée de ce qu'est exactement AppCompat, je ne faisais que l'utiliser. Et ces trois lignes ont fait le travail.
user3156040

Dommage, c'est que la documentation de Google, comme toujours, est incorrecte sur la façon d'y parvenir. Peut-être qu'ils devraient copier-coller ce code.
zeeshan


0

Nous ne pouvons pas empêcher le statut d'apparaître en mode plein écran dans les appareils kitkat (4.4+) ou supérieurs, alors essayez un hack pour empêcher la barre d'état de s'étendre.

La solution est assez grande, alors voici le lien de SO:

StackOverflow: Masquer la barre d'état dans Android 4.4+ ou Kitkat avec plein écran


Je pense que vous vous trompez, veuillez consulter les informations officielles sur le masquage de la barre d'état developer.android.com/training/system-ui/status.html
Jose Ricardo Citerio Alcala

Jose, je vais vérifier les informations sur le lien donné et mettre à jour la réponse si nécessaire. Cette question / réponse a été ajoutée il y a un an alors qu'il n'y avait pas de solution officielle pour ce scénario. Peut-être dans la prochaine version ou les versions google / android ont ajouté l'API / la méthode pour la même chose. S'ils ont fourni la solution, c'est un délice. Merci!
Jyo the Whiff

0

Cette solution fonctionne pour moi :)

@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

Utilisé dans Manifest

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

Dépend probablement du thème. Dans mon cas, une exception s'est produite: "java.lang.IllegalStateException: vous devez utiliser un thème Theme.AppCompat (ou un descendant) avec cette activité."
CoolMind

0

Sous res -> valeurs -> styles.xml

À l'intérieur de la pâte d'étiquette de corps de style

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

0

Si vous vous référez aux documents Google, vous pouvez utiliser cette méthode pour Android 4.1 et supérieur, appelez cette méthode avant 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);

salut! Pensez à ajouter des commentaires ou des explications verbales sur ce que vous faites.
George
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.