J'essaie de changer la couleur d'arrière-plan de la barre d'outils par programmation en procédant comme suit:
getSupportActionBar().setBackgroundDrawable(newColorDrawable(getResources().getColor(R.color.test_color_blue)));
Et voici le résultat:
avant:
Après:
Certains comment le titre de la barre d'outils a toujours la même couleur d'arrière-plan qu'auparavant.
voici ma barre d'outils xml:
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:gravity="center_vertical"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/Theme.Toolbar">
Et voici le thème:
<style name="Theme.Toolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="Android:maxHeight">@dimen/abc_action_bar_default_height_material</item>
<item name="Android:background">@color/primary</item>
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@Android:color/white</item>
<item name="titleTextAppearance">@style/Theme.Toolbar.Title</item>
</style>
Modifiez votre code comme suit:
toolbar.xml
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
style="@style/MyToolbarStyle"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:gravity="center_vertical">
Thème/Style
<style name="MyToolbarStyle">
<item name="Android:maxHeight">@dimen/abc_action_bar_default_height_material</item>
<item name="Android:background">@color/primary</item>
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
<item name="titleTextAppearance">@style/Theme.Toolbar.Title</item>
<!-- No need for colorPrimary, colorPrimaryDark, colorAccent here
this should go to the AppTheme -->
</style>
Résultat
Avant de définir la nouvelle couleur d'arrière-plan:
et après:
Tard, mais j'espère que ce serait un commentaire utile
J'avais ce item
dans mon style d'activité
<item name="Android:background">someColor</item>
donc quand j'ai changé toolbar
la couleur, le titre et les éléments du menu n'ont pas changé l'arrière-plan. Je viens de supprimer ce item
et maintenant cela fonctionne parfaitement.
Je n'ai pas eu le temps de comprendre les détails, mais je pense que cela pourrait être utile à quelqu'un d'autre.
utilisez-le pour accéder à la vue textuelle
public void changeToggleTitle() {
if (mToolbar != null) {
for(int i= 0; i < mToolbar.getChildCount(); i++){
View v = mToolbar.getChildAt(i);
if(v != null && v instanceof TextView){
TextView t = (TextView) v;
// Do the magic
}
}
}
}
mToolbar.setBackgroundResource(mGameEnum.getPrimeColorRes());