如何使用AppCompat来更改ActionBar的动作文本颜色

我正在尝试更改操作栏上的操作菜单项的文本颜色。 使用应用程序compat。 此外,溢出图标也不会改变。 这是我自定义样式的styles.xml文件。

RES /值/ styles.xml

<style name="AppTheme" parent="@style/Theme.AppCompat.Light"> <!-- Setting values in the default namespace affects API levels 7-13 --> <item name="actionBarStyle">@style/MyStyledActionBar</item> </style> <style name="MyStyledActionBar" parent="@style/Widget.AppCompat.Light.ActionBar"> <!-- Setting values in the default namespace affects API levels 7-13 --> <item name="background">@drawable/bg_action_bar</item> <item name="titleTextStyle">@style/MyActionBarTitleText</item> <item name="actionMenuTextAppearance">@style/MyActionBarMenuText</item> <item name="actionMenuTextColor">@style/MyActionBarMenuText</item> <item name="actionOverflowButtonStyle">@style/MyActionButtonOverFlow</item> </style> <style name="MyActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> <item name="android:textColor">@color/font_half_white</item> </style> <style name="MyActionBarMenuText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Menu"> <item name="android:textColor">@color/font_half_white</item> </style> <style name="MyActionButtonOverFlow" parent="@style/Widget.AppCompat.Light.ActionButton.Overflow"> <item name="android:src">@drawable/ic_action_search</item> </style> 

RES /值-14 / styles.xml

 <style name="AppTheme" parent="@style/Theme.AppCompat.Light"> <!-- Setting values in the android namespace affects API levels 14+ --> <item name="android:actionBarStyle">@style/MyStyledActionBar</item> </style> <style name="MyStyledActionBar" parent="@style/Widget.AppCompat.Light.ActionBar"> <!-- Setting values in the android namespace affects API levels 14+ --> <item name="android:background">@drawable/bg_action_bar</item> <item name="android:titleTextStyle">@style/MyActionBarTitleText</item> <item name="android:actionMenuTextAppearance">@style/MyActionBarMenuText</item> <item name="android:actionMenuTextColor">@style/MyActionBarMenuText</item> <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverFlow</item> </style> <style name="MyActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> <item name="android:textColor">@color/font_half_white</item> </style> <style name="MyActionBarMenuText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Menu"> <item name="android:textColor">@color/font_half_white</item> </style> <style name="MyActionButtonOverFlow" parent="@style/Widget.AppCompat.Light.Base.ActionButton.Overflow"> <item name="android:src">@drawable/ic_action_search</item> </style> 

res / colors.xml#F3F3F3

文字颜色仍然是黑色不会变成白色。 有没有人成功地改变了操作菜单的文字颜色。 请提出一些见解。 我正在testing4.4 Nexus5设备。

在这里输入图像说明

Solutions Collecting From Web of "如何使用AppCompat来更改ActionBar的动作文本颜色"

使用

 <item name="android:actionMenuTextColor">@color/font_half_white</item> // added style directly 

代替

 <item name="android:actionMenuTextColor">@style/MyActionButtonStyle</item> 

res/values-14/styles.xml

res/values/styles.xml

 <item name="actionMenuTextColor">@color/font_half_white</item> 

我用红色进行testing。 请参阅捕捉中红色的操作菜单项目主页

在这里输入图像说明

编辑:

完整的代码

res/values-14/styles.xml

 <resources> <!-- Base application theme for API 14+. This theme completely replaces AppBaseTheme from BOTH res/values/styles.xml and res/values-v11/styles.xml on API 14+ devices. --> <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- API 14 theme customizations can go here. --> <item name="android:actionMenuTextColor">@color/red</item> </style> </resources> 

然后在res / values / stles.xml中

  <resources> <style name="AppBaseTheme" parent="Theme.AppCompat.Light"> <!-- API 11 theme customizations can go here. --> <item name="actionMenuTextColor">@color/red</item> </style> </resources> 

在清单中

android:theme =“@ style / AppBaseTheme”>

另一个简单的

在这里输入图像说明

您可以使用它来更改操作栏的文本,而不考虑您的appcompat版本。获得所需颜色的hex代码并将其添加到onCreate()中。

 actionBar.setTitle(Html.fromHtml("<font color='#ff0000'>Some Title</font>")); 
  1. 检查您的布局xml文件中是否没有为<Toolbar>指定的android:theme属性,该属性的优先级高于主题

  2. 覆盖您在互联网上到处指出的actionBarStyle属性。