Comme le titre l'indique, comment puis-je changer la couleur des icônes de la barre d'état pour avoir une teinte sombre au lieu du blanc par défaut.
[~ # ~] de [~ # ~]
[~ # ~] à [~ # ~]
Pour que les icônes de la barre d'état "aient une teinte sombre au lieu du blanc par défaut, ajoutez la balise suivante dans votre styles.xml
(ou plus précisément dans values-v23/styles.xml
) fichier:
<item name="Android:windowLightStatusBar" tools:targetApi="23">true</item>
Vous pouvez également modifier l'indicateur au moment de l'exécution en le définissant sur n'importe quel View
:
View yourView = findViewById(R.id.your_view);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (yourView != null) {
yourView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
}
Si vous souhaitez réinitialiser les modifications, désactivez le drapeau comme ceci:
yourView.setSystemUiVisibility(0);
Ci-dessous est un exemple de code, changez la couleur de la barre d'état lorsque vous basculez entre portrait et paysage. mode portrait: barre claire, icône sombre; mode paysage: barre sombre, icône claire; Thème: "Theme.AppCompat.Light"
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Window window = getWindow();
View decorView = window.getDecorView();
if(Configuration.ORIENTATION_LANDSCAPE == newConfig.orientation) {
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
window.setStatusBarColor(Color.parseColor("#55000000")); // set dark color, the icon will auto change light
}
} else {
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
window.setStatusBarColor(Color.parseColor("#fffafafa"));
}
}
}