Modifier la couleur de la barre d’état avec AppCompat ActionBarActivity

Dans mon activité, je change la couleur de la barre d’outils à l’aide de Palette mais sur les périphériques 5.0 utilisant ActionBarActivity la couleur de la status bar est la couleur de mon colorPrimaryDark dans mon thème d’activité.

Je me rends compte que dans 5.0 vous pouvez utiliser Window.setStatusBarColor() mais ActionBarActivity ne l’a pas.

alors ma question est dans 5.0 comment puis-je changer la couleur de la barre d’état avec ActionBarActivity ?

Je ne suis pas sûr de comprendre le problème.

Si vous souhaitez modifier la couleur de la barre d’état par programmation (et à condition que le périphérique possède Android 5.0), vous pouvez utiliser Window.setStatusBarColor() . Que l’activité soit dérivée d’ Activity ou d’ ActionBarActivity ne devrait pas faire de différence.

Essayez juste de faire:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(Color.BLUE); } 

Je viens de tester cela avec ActionBarActivity et ça marche bien.


Remarque: La définition de l’indicateur FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS programmation n’est pas nécessaire si votre fichier de styles values-v21 est déjà défini, via:

  true 

Il existe différentes manières de modifier la couleur de la barre d’état.

1) Utilisation du styles.xml. Vous pouvez utiliser l’atsortingbut android: statusBarColor pour le faire de manière simple mais statique.

Remarque: Vous pouvez également utiliser cet atsortingbut avec le thème Matière.

     

2) Vous pouvez le faire dynamicment en utilisant la méthode setStatusBarColor (int) dans la classe Window. Mais rappelez-vous que cette méthode est uniquement disponible pour API 21 ou supérieure. Alors, assurez-vous de vérifier cela ou votre application tombera sûrement en panne dans les appareils inférieurs.

Voici un exemple pratique de cette méthode.

 if (Build.VERSION.SDK_INT >= 21) { Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.setStatusBarColor(getResources().getColor(R.color.primaryDark)); } 

Où primaryDark est la teinte 700 de la couleur primaire que j’utilise dans mon application. Vous pouvez définir cette couleur dans le fichier colors.xml.

Essayez-le et faites-moi savoir si vous avez des questions. J’espère que cela aide.

Je ne pense pas que la couleur de la barre d’état a été implémentée dans AppCompat pour le moment. Ce sont les atsortingbuts disponibles:

                     

(De \ sdk \ extras \ android \ support \ v7 \ appcompat \ res \ values ​​\ attrs.xml )

Essayez ceci, j’ai utilisé ceci et cela fonctionne très bien avec v21.

   

Merci pour les réponses ci-dessus, avec l’aide de ceux-ci, après que certaines R & D pour l’application xamarin.android MVVMCross, ci-dessous travaillé

Indicateur spécifié pour l’activité dans la méthode OnCreate

 protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); this.Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds); } 

Pour chaque MvxActivity, le thème est mentionné ci-dessous

  [Activity( LaunchMode = LaunchMode.SingleTop, ScreenOrientation = ScreenOrientation.Portrait, Theme = "@style/Theme.Splash", Name = "MyView" )] 

Mon SplashStyle.xml ressemble à ci-dessous

     

Et j’ai V8 appcompact référé.