Comment changer la couleur de fond de la barre d'état android

je veux changer la couleur de fond de la barre d'état en écrivant une demande. Mon appareil android a la couleur noire, je veux le changer pour certaines autres couleurs. J'ai vu quelques messages liés à cela ici, mais ils parlent de notification arrière-plan.

si quelqu'un est au courant, Aidez-moi.

la barre d'état par défaut

enter image description here

après avoir utilisé un historique de la barre de statut

enter image description here

16
demandé sur Nicolai Weitkemper 2012-01-28 15:40:25

4 réponses

Désolé, à moins que vous ne fassiez une ROM personnalisée ce n'est pas possible, à moins que vous ne vouliez que la barre d'État soit changée pour votre application.

cela demanderait beaucoup de travail.

d'Abord, vous aurez besoin d'ajouter un Thème.NoTitleBar.Plein écran à votre manifeste

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" 
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        >

ensuite, une fois que vous avez fait que vous avez besoin de créer une mise en page standard qui représente la barre d'état, cela signifierait que vous devez ajouter le temps, et également recevoir toutes les notifications des autres applications, je ne connais pas personnellement comment faire, mais je suis sûr qu'il ya un moyen.

si vous voulez vraiment faire ce goodluck, vous avez un moment difficile devant vous.


Désolé, sauf si vous avez le savoir-faire de construire des ROMS personnalisés Je ne pense pas que ce soit possible

12
répondu FabianCook 2012-01-28 12:12:03

C'est possible sur Kitkat et après.

Si vous voulez l'utiliser dans une application (comme vous l'avez demandé), vous pouvez utiliser cette bibliothèque https://github.com/jgilfelt/SystemBarTint

il suffit d'écrire:

// set a custom tint color for all system bars
tintManager.setTintColor(Color.parseColor("#99000FF"));   
// set a custom navigation bar resource
tintManager.setNavigationBarTintResource(R.drawable.my_tint);
// set a custom status bar drawable
tintManager.setStatusBarTintDrawable(MyDrawable);
12
répondu Ravit D 2014-04-30 07:30:23

dans styles.xml ce faire:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_secondary</item>
        <item name="colorAccent">@color/color_accent</item>
         <!---Below is the code for status bar color------>
        <item name="android:statusBarColor">@color/color_primary</item>
    </style>
</resources>

Place c'est dans vos valeurs-V21/styles.xml, pour l'activer sur Lollipop et plus tard.

De le faire par programmation le faire:

Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(activity.getResources().getColor(R.color.example_color));`
7
répondu freak 2016-05-24 21:34:34

si vous voulez mettre à jour la couleur de la barre d'état sur Lollipop sans mettre à jour votre ADT et SDK et tout ce qui s'y rapporte, vous pouvez utiliser des réflexions pour atteindre les méthodes de API 21 (Lollipop) et plus

dans votre activité:

    if (Build.VERSION.SDK_INT >= 21) {
        Window window = getWindow();

        // original code, works on Lollipop SDKs
        // window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        // window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        // window.setStatusBarColor(getResources().getColor(YOUR_COLOR));

        try {
            // to work on old SDKs 
            int FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS = 0x80000000;
            window.addFlags(FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

            Class<?> cls = window.getClass();
            Method method = cls.getDeclaredMethod("setStatusBarColor",
                    new Class<?>[] { Integer.TYPE });

            method.invoke(window, Res.color(theme.statusColor));

        } catch (Exception e) {
            // upgrade your SDK and ADT :D
        }

    }

mon API minimum actuel est 15, si vous ne trouvez pas

WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS

dans votre SDK, vous pouvez obtenir sa valeur à partir de la documentation comme ce que j'ai fait avec

WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS

espère

1
répondu Ahmed Adel Ismail 2015-06-15 13:38:48