web-dev-qa-db-fra.com

Afficher la barre d'état dans Android dans l'application PhoneGap (c.-à-d. Empêcher le plein écran)

J'ai une application phonegap 3.0.0. Mon application couvre la barre d'état (la chose avec l'horloge, les informations de réception, etc.). Puisque je ne suis pas un jeu en plein écran, ce n'est pas souhaitable.

Je crois que c'est en cours d'exécution comme une application "plein écran".

J'ai trouvé des publications ici sur la pile pour faire le contraire (c.-à-d. Faire passer une application en plein écran) et ai effectué l'inverse de ce qui était suggéré. Je me demande si quelque chose a changé dans PhoneGap ou peut-être dans la CLI PhoneGap que j'ai utilisée pour créer le projet, car mon application s'affiche en plein écran.

J'ai essayé ceci:

  public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        super.setIntegerProperty("splashscreen", R.drawable.splash);

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

        super.loadUrl(Config.getStartUrl(), 10000);
    }

Ce qui indique explicitement qu'il ne doit PAS être en mode plein écran .... mais il reste affiché en plein écran.

15
blak3r

Je l'ai compris.

Le plugin Splashscreen doit le définir en plein écran. En appelant la méthode clearFlags APRES super.loadUrl, une fois l'application chargée, la barre d'état s'affiche.

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    super.setIntegerProperty("splashscreen", R.drawable.splash);
    super.loadUrl(Config.getStartUrl(), 10000);

    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
19
blak3r

Le code natif suggéré ci-dessus fonctionnera, mais une méthode plus propre consisterait simplement à vous assurer que not avez dans le fichier config.xml

<preference name="fullscreen" value="true" />

vous pouvez également le définir sur "false", mais sa valeur par défaut n'est donc pas nécessaire. travaille pour moi.

39
Liran Brimer

effectuez cette modification dans res/xml/config.xml sur Eclipse.

<preference
    name="fullscreen"
    value="false" />
2
Mallu Don
// Hide status bar
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
// Show status bar
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

Le comportement par défaut ne devrait PAS être en plein écran, avez-vous modifié votre thème en XML?

Un autre code que j'ai trouvé, juste au cas où:

private void toggleFullscreen(boolean fullscreen)
{
    WindowManager.LayoutParams attrs = getWindow().getAttributes();
    if (fullscreen)
    {
        attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
    }
    else
    {
        attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
    }
    getWindow().setAttributes(attrs);
}
1
Waza_Be