使用AppCompat 21中的Light.DarkActionBar主题更改ActionBar标题文本颜色

时间:2014-11-11 17:23:25

标签: android android-actionbar android-appcompat android-actionbar-compat material-design

我正在使用v7 appcompat 21库在pre-Lollipop设备上使用新的Material样式。我的styles.xml看起来像这样:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:textColorPrimary">#ff0000</item>
    <item name="android:textColorPrimaryInverse">#ff0000</item>
</style>

我正在尝试更改操作栏上的文字颜色。但无论我为textColorPrimary或​​textColorPrimaryInverse提供什么,颜色总是白色的。如果我继承自Theme.AppCompat,我可以覆盖“textColorPrimary”,如果我从Theme.AppCompat.Light继承,我可以覆盖“textColorPrimaryInverse”。但是在使用Light.DarkActionBar主题时都不起作用。

我肯定在使用AppTheme,因为设置像colorPrimary这样的属性来改变动作栏背景颜色可以正常工作。我没有使用任何其他资源限定符样式文件。

我已经挖掘了android样式文件,似乎无法找出要覆盖的属性。有任何想法吗?这是appcompat错误吗?

7 个答案:

答案 0 :(得分:157)

您可以使用主题的actionBarStyle属性进行更改。

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
    <item name="titleTextStyle">@style/MyTitleTextStyle</item>
</style>

<style name="MyTitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">CHANGE_COLOR_HERE</item>
</style>

答案 1 :(得分:23)

这将使您的工具栏标题使用白色:

ThemeOverlay.AppCompat.Dark.ActionBar

了解Theme.AppCompat.Light.DarkActionBarapp:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"检查this answer

之间的区别

它的{{1}}应用浅色,因为此主题中使用的标题颜色 是白色的。

答案 2 :(得分:4)

确保在所有值文件夹中进行更改,例如&#39; values-v11&#39;,&#39; values-v14&#39;等等..如果它存在。

否则请确保相同的AppTheme&#39;您在上面显示的内容正在应用中使用。

请将完整的style.xml和清单代码发布给您,以便更深入地了解您的问题。

您也可以尝试在工具栏上设置 app:theme app:popupTheme 属性。

答案 3 :(得分:3)

尝试在您的活动的onCreate中添加此内容。适用于几乎所有Android版本。

对于java Activity:

 actionBar.setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));  

对于片段:

getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));

答案 4 :(得分:1)

我使用了生成的布局xml文件,并没有注意到android:theme属性被覆盖。

你检查过你的吗? :)

答案 5 :(得分:1)

不幸的是,我为更改应用名称的颜色付出了很多努力。我有很多主题。最后,对我有用的是更改以下两个属性。

    <item name="android:textColorPrimary">#FF0000</item>
    <item name="android:textColorSecondary">#FF0000</item>

答案 6 :(得分:-3)

试试这个:

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