L’arrière-plan de la barre d’outils est de couleur sombre, je veux que le texte et la flèche arrière soient blancs. J'ai essayé de suivre, mais ça ne marche pas.
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/blue</item>
<item name="colorPrimaryDark">@color/blue_darker</item>
<item name="colorAccent">@color/purple</item>
<!-- item name="Android:textColorPrimary">@color/white</item--> // I don't want to set this, changes everywhere.
<item name="Android:textColorSecondary">@color/white</item>
<item name="Android:toolbarStyle">@style/AppTheme.ToolbarStyle</item>
<item name="toolbarStyle">@style/AppTheme.ToolbarStyle</item>
<item name="drawerArrowStyle">@style/AppTheme.DrawerArrowStyle</item>
</style>
<style name="AppTheme.ToolbarStyle" parent="Base.Widget.AppCompat.Toolbar">
<!--<item name="actionOverflowButtonStyle">@style/AppTheme.OverflowButtonStyle</item>-->
<item name="Android:textColor">@color/white</item> // doesn't work
<item name="titleTextAppearance">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item>
<item name="Android:titleTextAppearance">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item>
<item name="subtitleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle</item>
</style>
Il y a de fortes chances que vous sortiez du mauvais parent. Sinon, vous pouvez essayer d'ajouter style
à la présentation toolbar
directement, si vous souhaitez remplacer les paramètres du thème.
Dans la disposition de votre barre d’outils:
<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"
Android:layout_height="?attr/actionBarSize"
Android:minHeight="?attr/actionBarSize"
app:theme="@style/ToolBarStyle"
app:popupTheme="@style/ToolBarPopupStyle"
Android:background="@color/actionbar_color" />
Dans tes styles:
<!-- ToolBar -->
<style name="ToolBarStyle" parent="Theme.AppCompat">
<item name="Android:textColorPrimary">@Android:color/white</item>
<item name="Android:textColorSecondary">@Android:color/white</item>
<item name="actionMenuTextColor">@Android:color/white</item>
<item name="actionOverflowButtonStyle">@style/ActionButtonOverflowStyle</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>
Ajouter ce qui suit comme 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_height="wrap_content"
Android:layout_width="match_parent"
Android:fitsSystemWindows="true"
Android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
Android:background="?attr/colorPrimary">
</Android.support.v7.widget.Toolbar>
Puis dans la mise en page où vous aviez besoin
<include layout="@layout/toolbar"/>
Prendre plaisir
Dans l'activité, vous pouvez utiliser
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitleTextColor(getResources().getColor(Android.R.color.white));
Si vous aimez choisir xml pour la couleur du titre et la flèche arrière blanche, ajoutez ce style dans style.xml.
<style name="ToolBarStyle" parent="Theme.AppCompat">
<item name="Android:textColorPrimary">@Android:color/white</item>
<item name="Android:textColorSecondary">@Android:color/white</item>
<item name="actionMenuTextColor">@Android:color/white</item>
</style>
Et la barre d'outils ressemble à:
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
app:theme="@style/ToolBarStyle"
Android:layout_height="?attr/actionBarSize"
/>
Cette solution pourrait être plus facile. Mais cela nécessite une version plus haute de l’API (23). ajoutez simplement ce code à votre barre d’outils en XML:
<Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:minHeight="?android:attr/actionBarSize"
Android:background="?android:attr/colorPrimary"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
Android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
Android:titleTextColor="#ffffffff" />
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimaryDark"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</Android.support.design.widget.AppBarLayout>
Si vous utilisez AndroidX
(à compter de juillet 2019), vous pouvez les ajouter:
<androidx.appcompat.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_collapseMode="pin"
app:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.MaterialComponents.Light"/>
REMARQUE! Cela a été testé pour fonctionner si votre Toolbar
est placé directement dans AppBarLayout
mais pas dans CollapsingToolbarLayout
<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"
Android:layout_height="?attr/actionBarSize"
Android:background="@color/actionBar"
app:titleTextAppearance="@style/ToolbarTitleText"
app:theme="@style/ToolBarStyle">
<TextView
Android:id="@+id/title"
style="@style/ToolbarTitleText"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:text="hh"/>
<!-- ToolBar -->
<style name="ToolBarStyle" parent="Widget.AppCompat.Toolbar">
<item name="actionMenuTextColor">#ff63BBF7</item>
</style>
utilisez app: theme = "@ style/ToolBarStyle"
Ressources de référence: http: //blog.csdn.net/wyyl1/article/details/45972371
cette méthode m'a aidé.
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primaryDark</item>
<item name="colorAccent">@color/highlightRed</item>
<item name="actionBarTheme">@style/ToolbarStyle</item>
</style>
<style name="ToolbarStyle" parent="Widget.AppCompat.ActionBar">
<item name="Android:textColorPrimary">@color/white</item>
</style>
Essayez ceci sur votre fichier XML
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
app:titleTextColor="@color/colorAccent"
app:theme="@style/ToolbarColoredBackArrow"
app:subtitleTextColor="@color/colorAccent"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
Et ajoutez ceci est votre fichier colors.xml
<color name="colorAccent">YOUR_COLOR</color>
Essayez beaucoup de méthodes, dans la version basse de l'API, une méthode possible est <item name="actionMenuTextColor">@color/your_color</item>
et n'utilisez pas l'espace de noms Android
ps:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- change the textColor -->
<item name="actionMenuTextColor">@color/actionMenuTextColor</item>
</style>
Si nous suivons le modèle d'activité créé par Android Studios, c'est l'AppBarLayout qui doit avoir un thème Android d'AppBarOverlay, que vous devez définir dans votre style.xml. Cela devrait vous donner votre couleur blanche toobar/actionbar color text.
<Android.support.design.widget.AppBarLayout
Android:id="@+id/app_bar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:theme="@style/AppTheme.AppBarOverlay"> ...
Dans styles.xml, assurez-vous que les éléments suivants existent:
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
ajoutez cette ligne à la balise de la barre d'outils. 100% de travail Android: theme = "@ style/Theme.AppCompat.Light.DarkActionBar"
J'ai utilisé des espaces réservés, alors suivez-moi, vous voudrez peut-être conserver l'héritage du style d'origine.
Avant
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolBar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
Android:elevation="4dp"
Android:theme="@style/{{originalBaseStyle}}"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
Après:
styles.xml
<style name="{{yourToolbarStyle}}" parent="{{originalBaseStyle}}">
<item name="Android:textColorPrimary">@Android:color/white</item>
<item name="Android:textColorSecondary">@Android:color/white</item>
<item name="actionMenuTextColor">@Android:color/white</item>
<item name="actionOverflowButtonStyle">@style/ActionButtonOverflowStyle</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>
Donc
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolBar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
Android:elevation="4dp"
Android:theme="@style/{{yourToolbarStyle}}"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
Si vous utilisez la dernière itération de Android Studio 3.0 et générez vos classes d'activité, vos fichiers de styles changent comme suit:
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
Pour ça:
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar" />