首页 文章

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

提问于
浏览
48

我正在使用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错误吗?

6 回答

  • -3

    试试这个:

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

    您可以使用主题的 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>
    
  • 146

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

    <android.support.v7.widget.Toolbar
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/toolbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary" />
    

    要了解 ThemeOverlay.AppCompat.Dark.ActionBarTheme.AppCompat.Light.DarkActionBar 之间的区别,请检查this answer

    应用浅色的是 app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" ,因为此主题中使用的 Headers 颜色为白色 .

  • 4

    确保在所有值文件夹中进行更改,例如'values-v11','values-v14'等 . 如果存在 .

    否则请确保您在应用程序中使用上面显示的相同“AppTheme” .

    请发布完整的style.xml和清单代码,引用样式,以便更好地了解您的问题 .

    您也可以尝试在ToolBar上设置 app:themeapp:popupTheme 属性 .

  • 4

    尝试在活动的onCreate中添加此项 . 适用于几乎所有Android版本 .

    对于java Activity:

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

    对于片段:

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

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

    你检查过了吗? :)

相关问题