J'essaie de définir la couleur du texte de la barre d'état dans Android v21, mais je ne vois pas de méthode d'API pour cela. Voici ce que j'ai jusqu'ici pour le fond
MyActivity.Java> onCreate:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(getResources().getColor(R.color.white));
}
De toute évidence, le texte blanc sur fond blanc ne fonctionnera pas. Je cherche quelque chose comme
window.setStatusBarTextColor(getResources().getColor(R.color.orange));
Android 5.0
nous sommes en mesure de modifier uniquement la couleur de la barre d'état et non la couleur du texte de la barre d'état.
il n'y a pas de méthode comme
setStatusBarTextColor(getResources().getColor(R.color.orange));
En bref, ce n'est pas possible sur Android 5.0. Cochez cette réponse
Vous ne pouvez pas définir la couleur du texte de la barre d'état en spécifiant explicitement une couleur.
Mais vous pouvez essayer ci-dessous l’alternative ajoutée dans l’API 23,
Vous pouvez utiliser l'attribut "Android: windowLightStatusBar" de deux manières.
<style name="statusBarStyle" parent="@Android:style/Theme.DeviceDefault.Light"> <item name="Android:statusBarColor">@color/status_bar_color</item> <item name="Android:windowLightStatusBar">false</item> </style>
Vous pouvez vérifier ci-dessus api dans lien ci-dessous - https://developer.Android.com/reference/Android/R.attr.html#windowLightStatusBar
Voici une implémentation Java de la réponse de Gandalf458 .
/** Changes the System Bar Theme. */
@RequiresApi(api = Build.VERSION_CODES.M)
public static final void setSystemBarTheme(final Activity pActivity, final boolean pIsDark) {
// Fetch the current flags.
final int lFlags = pActivity.getWindow().getDecorView().getSystemUiVisibility();
// Update the SystemUiVisibility dependening on whether we want a Light or Dark theme.
pActivity.getWindow().getDecorView().setSystemUiVisibility(pIsDark ? (lFlags & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) : (lFlags | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR));
}
Vous pouvez également le faire au moment de l'exécution. Voici un exemple pour Mono.Android utilisant le drapeau SystemUiVisibility. Vous devez effectuer quelques opérations au niveau des bits pour changer l'indicateur. Votre application doit être définie sur l'API cible 23 ou supérieure pour être compilée avec cet indicateur.
//Android 6.0 introduced the ability to set a light colored text on the status bar
//MyActivity needs to be changed to your activity
if(Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.M)
{
int newUiVisibility = (int)MyActivity.Window.DecorView.SystemUiVisibility;
if(state == StatusBarState.Light)
{
//Dark Text to show up on your light status bar
newUiVisibility |= (int)Android.Views.SystemUiFlags.LightStatusBar;
}
else if(state == StatusBarState.Dark)
{
//Light Text to show up on your dark status bar
newUiVisibility &= ~(int)Android.Views.SystemUiFlags.LightStatusBar;
}
MyActivity.Window.DecorView.SystemUiVisibility = (Android.Views.StatusBarVisibility)newUiVisibility;
}
public enum StatusBarState
{
Light,
Dark
}
Vous pouvez utiliser cette ligne pour définir une couleur de texte plus sombre lorsque vous utilisez le blanc pour la barre d'état.
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);