Comment modifier le thème de la barre d'outils AppCompat v21 par programme?

C'est ma barre d'outils xml

<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" app:contentInsetEnd="0dp" app:contentInsetStart="0dp" android:layout_height="@dimen/toolbar_height" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" android:background="@color/primary_color"> </android.support.v7.widget.Toolbar> 

Je veux changer l' application: thème par programme. Comment puis-je faire cela?

2 Solutions collect form web for “Comment modifier le thème de la barre d'outils AppCompat v21 par programme?”

Vous pouvez le faire par programmation ou avec style:

 Toolbar toolbar; // your toolbar toolbar.setBackgroundColor(newColor); // i don't tested this method. Write if it's not working toolbar.setTitleTextColor(titleColor); // if toolbar is white set title to black, if toolbar is black set title to white 

Ou vous pouvez le faire avec style:

Ajouter attrs.xml:

 <?xml version="1.0" encoding="utf-8"?> <resources> <attr name="toolbarStyle" format="reference"/> </resources> 

Et maintenant modifiez toolbar.xml:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" app:contentInsetEnd="0dp" app:contentInsetStart="0dp" android:layout_height="@dimen/toolbar_height" app:theme="?attr/toolbarStyle" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" android:background="@color/primary_color"> </android.support.v7.widget.Toolbar> 

Et dans styles.xml (si vous ne l'avez pas, créez-le):

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyStyle.Dark" parent="AppCompat.Theme"> <item name="toolbarStyle">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> </style> <style name="MyStyle.Light" parent="AppCompat.Theme.Light"> <item name="toolbarStyle">@style/ThemeOverlay.AppCompat.Light.ActionBar</item> </style> </resources> 

Si vous sélectionnez une deuxième méthode (avec des styles), vous devez redémarrer l'activité et utiliser la méthode setTheme avant super.onCreate ()

J'espère que je t'ai aidé.

Utilisez l'extrait de code suivant pour ajouter un thème:

 Toolbar toolbar; toolbar.getContext().setTheme(R.style.ThemeOverlay_AppCompat_Dark_ActionBar); 
coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.