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

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

Fugogugo
la source
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();
 }
Policier
la source
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 .

Karan
la source
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);
Prabh profond
la source
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);
Cabezas
la source
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
}
Faxriddin Abdullayev
la source
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);
}
Patel Vicky
la source
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

Farruh Habibullaev
la source
6

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

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

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

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

Jyo l'odeur
la source
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);
Dhaval Jivani
la source
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
la source
0

Utilisé dans Manifest

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

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

la source
salut! Pensez à ajouter des commentaires ou des explications verbales sur ce que vous faites.
George