【问题标题】:Actionbar Compat change title textColorActionbar Compat 更改标题 textColor
【发布时间】:2017-01-20 19:04:32
【问题描述】:

我正在尝试修改 ActionBarSupport 标题的文本颜色。我使用ActionBarStyleGenererator 创建了一个颜色正确的主题,效果很好。

在使用浅色主题时,我想将标题的颜色更改为白色(在生成器中我无法设置文本颜色(。由于多种原因,我无法使用深色操作栏主题。我很接近,只需要将标题设为白色 ;-)

我在这里做错了什么?

<style name="ActionBar.Transparent.MyApp" parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="background">@drawable/ab_transparent_myapp</item>
    <item name="progressBarStyle">@style/ProgressBar.MyApp</item>
    <item name="titleTextStyle">@style/MyApp.TitleTextStyle</item>  
</style>

 <style name="MyApp.TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.Base.ActionBar.Title">
    <item name="android:textColor">#ffffff</item>    
 </style>

【问题讨论】:

    标签: android android-actionbar-compat


    【解决方案1】:

    下面的代码对我有用。希望对你也有帮助。

    <style name="AppTheme" parent="AppBaseTheme">
            <item name="actionBarStyle">@style/ActionBarCompat</item>
        </style>
    
        <style name="ActionBarCompat" parent="@style/Widget.AppCompat.Base.ActionBar">
            <item name="titleTextStyle">@style/titleStyle</item>
        </style>
    
        <style name="titleStyle" parent="@style/TextAppearance.AppCompat.Widget.Base.ActionBar.Title">
            <item name="android:textColor">@android:color/white</item>
        </style>
    

    【讨论】:

    • 这让我的操作栏变成了白色
    【解决方案2】:

    尴尬。我没有注意所创建的 values-v14/-文件夹(它覆盖了 vales/)ActionBarStyleGenererator。在 values-v14 中的样式上使用 android-prefix 可以正常工作:

          <item name="android:titleTextStyle">@style/titleTextStyle</item>
    

    【讨论】:

    • 感谢您回答自己的问题 +1!拯救了我的一天!嘿,我们有什么理由必须把 --android-prefix -- 放在 v11 中?
    • 不客气!我不能说,我有它并且它工作,没有进一步调查它。
    【解决方案3】:

    发现于Overflow styling

    我一直在尝试通过方向更改来保持 ActionBar 标题文本颜色,但运气不佳,直到我从上述网站获得线索。我将 Spannable 应用于标题。这是我在设置 ActionBar 时所做的:

        Spannable actionBarTitle = new SpannableString("Action Bar Title");
        actionBarTitle.setSpan(
                new ForegroundColorSpan(Color.WHITE),  
                0, 
                actionBarTitle.length(), 
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        mActionBar.setTitle(actionBarTitle);
    

    这需要在方向改变时执行。我从 onCreate() 调用它...不知道它是否适用于 onConfigurationChange()。

    【讨论】:

      【解决方案4】:

      @TNR 是正确的,但是您应该仔细检查您的布局 xml 文件是否没有用不同的样式覆盖 android:theme 属性。

      如果您生成了布局文件,通常会发生这种情况

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多