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
après avoir utilisé un historique de la barre de statut
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
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);
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));`
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