Je souhaite modifier la couleur d'arrière-plan de la barre d'état en écrivant une application. Mon Android a la couleur noire, je veux le changer en une autre couleur. J'ai vu quelques articles à ce sujet ici, mais ils parlent de l'arrière-plan des notifications.
Si un organisme le sait, aidez-moi.
La barre d'état par défaut
Après avoir utilisé un dessin comme arrière-plan de la barre d'état
Désolé, sauf si vous faites un ROM ROM personnalisé, cela n'est pas possible, sauf si vous souhaitez uniquement que la barre d'état soit modifiée pour votre application.
Cela nécessiterait beaucoup de travail.
Vous devez d'abord ajouter Theme.NoTitleBar.Fullscreen à 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 cela, vous devez créer une mise en page standard qui représente la barre d'état, cela signifierait que vous devez ajouter l'heure et également recevoir toutes les notifications d'autres applications, je ne sais pas personnellement comment le faire, mais Je suis sûr qu'il existe un moyen.
Si vous voulez vraiment faire cette chance, vous avez du mal à vous devancer.
Désolé, sauf si vous savez comment créer des ROM personnalisées, je ne pense pas que ce soit possible
Cela est possible sur KitKat et après.
Si vous souhaitez l'utiliser dans une application (comme vous l'avez demandé), vous pouvez utiliser cette bibliothèque https://github.com/jgilfelt/SystemBarTint
Il vous 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);
Dans styles.xml, procédez comme suit:
<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>
Placez-le dans votre fichier values-v21/styles.xml, pour l'activer sur Lollipop et versions ultérieures.
Pour le faire par programme, vous pouvez 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));
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 l'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 minimale actuelle est de 15, si vous ne trouvez pas
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
dans votre SDK, vous pouvez obtenir sa valeur de la documentation comme ce que j'ai fait avec
WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
j'espère que cela a aidé