4 votes

Barre d'action sous la barre de notification/titre

J'ai un problème avec la barre d'action de mon application. Dans certains scénarios, la barre d'action semble passer "sous" la barre de notification/titre. C'est reproductible à chaque fois et je n'arrive pas à comprendre pourquoi cela se produit. J'utilise l'application ZXING avec Intents pour scanner des codes-barres et les renvoyer à mon application, et c'est à un moment donné au cours de ce processus que le problème se produit.

J'ai pensé qu'il serait préférable de vous montrer le problème en images.

1 : L'écran d'accueil de l'application, tout est normal.

App home screen, no issues

2 : Utilisez l'option de menu pour scanner un code-barres. Cela apparaît comme prévu.

Scan a product...

3 : La page produit de l'article numérisé apparaît normale. Mais si je clique sur "Annuler"...

Product page, all still normal. Press cancel...

4 : La barre d'action a maintenant été placée sous la barre de notification/titre.

Home screen now shows the ActionBar under the notification/title bar

La seule autre mention d'un tel bogue (que je peux trouver) est dans ce problème GitHub pour ActionBarSherlock (que j'utilise) : https://github.com/JakeWharton/ActionBarSherlock/issues/602

J'ai vérifié et je ne fais rien de bizarre avec configChanges comme le mentionne Jake.

Ce problème est observé sur mon appareil 4.2.2, je ne suis pas en mesure de le tester sur un appareil pré-ICS malheureusement.

Toute réflexion ou suggestion est la bienvenue !

2voto

petey Points 5823

Je suppose qu'il n'est pas réinitialisé lorsque vous revenez de l'écran zxing. Dans votre activité pour "Best Before", essayez de réinitialiser les drapeaux de fenêtre pour le plein écran, quelque chose comme ça :

@Override
protected void onResume() {
    super.onResume();
    //getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setSystemUiVisibility(this, View.SYSTEM_UI_FLAG_VISIBLE /* SYSTEM_UI_FLAG_VISIBLE=0 */);
}

private static void setSystemUiVisibility(final Activity activity, final int newValue){
    if (activity.getWindow() != null){
        View v = activity.getWindow().getDecorView();
        if (v != null) {
            try {
                Method methodSetSystemUIVisibility = v.getClass().getMethod("setSystemUiVisibility", int.class);
                methodSetSystemUIVisibility.invoke(v, newValue);
            } catch (Exception noop) {
            }
        }
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X