Android - 更改操作栏标题文本颜色

时间:2015-11-13 17:06:06

标签: android android-actionbar textview

我正在开发一款应用,我希望change the textcolor of the actionbar title。现在,我在清单中定义了一个主题:

<application
        android:theme="@style/AppTheme">
</application>

在styles.xml中定义:

<style name="AppTheme" parent="android:style/Theme.Holo.Light">
        <item name="android:textViewStyle">@style/AppTheme.TextView</item>
        <item name="android:actionBarStyle">@style/AppTheme.ActionBarStyle</item>
    </style>

    <style name="AppTheme.ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:titleTextStyle">@style/AppTheme.ActionBar.TitleTextStyle</item>
    </style>

    <style name="AppTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
        <item name="android:textColor">@color/themeapp</item>
    </style>

    <style name="AppTheme.TextView" parent="@android:style/Widget.TextView">
        <item name="android:textColor">#FFFFFF</item>
    </style>

这不起作用,但我不明白为什么。这应该根据this answer工作。文本视图样式都不起作用。

我做错了什么?

更新: 改为迎接Grace Feng的回答

13 个答案:

答案 0 :(得分:14)

使用SpannableString,我们可以将文字颜色设置为Actionbar title

SpannableString s = new SpannableString(title);
s.setSpan(new ForegroundColorSpan(Color.GREEN), 0, title.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
getSupportActionBar().setTitle(s);

答案 1 :(得分:9)

Background

你错过了一个符号“@”吗?

Foreground

<style name="AppTheme" parent="android:style/Theme.Holo.Light">

<style name="AppTheme.TextView" parent="android:Widget.TextView">

答案 2 :(得分:4)

您可以找到如何自定义ActionBar here。我建议使用ToolBarTheme.AppCompat代替 - example

答案 3 :(得分:2)

我假设您使用ToolBar作为ActionBar。在所有答案中,我认为这是最容易实现的答案。适用于所有API版本。

所以这是:

操作栏标题使用textColorPrimary作为其文本颜色。因此,要在styles.xml中更改它,请使用textColorPrimary的项目创建一个新样式,并设置您需要的任何颜色。

<style name="appBarTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:textColorPrimary">@color/colorRed</item>
</style>

现在,将该样式添加为XML中工具栏的主题。

<android.support.v7.widget.Toolbar
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_scrollFlags="enterAlways"
    android:id="@+id/toolbar"
    android:theme="@style/appBarTheme">
</android.support.v7.widget.Toolbar>

现在你得到了你需要的东西。

答案 4 :(得分:2)

只需像这样添加app:titleTextColor="@color/CUSTOM_COLOR"

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/yellow_light"
    app:titleTextColor="@color/CUSTOM_COLOR"
    app:popupTheme="@style/AppTheme.PopupOverlay"/>

答案 5 :(得分:1)

在StackOverflow周围闲逛我发现this answer终于有效了。

我在这里报告:

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/ActionBar</item>
    ...
</style>

<style name="ActionBar" parent="@android:style/Widget.ActionBar">
  <item name="android:titleTextStyle">@style/ActionBar.Title</item>
  <item name="android:subtitleTextStyle">@style/ActionBar.Subtitle</item>
  ...
</style>

<style name="ActionBar.Title">
  <item name="android:textColor">@color/my_color</item>
</style>

<style name="ActionBar.Subtitle">
  <item name="android:textColor">@color/my_color</item>
</style>

答案 6 :(得分:1)

当我遇到同样的问题时,我使用了:

<item name="titleTextStyle">@style/ActionBarTextStyle</item>

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

答案 7 :(得分:0)

我认为这只是你活动的问题。我使用了与你相同的代码,并且它有效。enter image description here

首先,我使用AppCompatActivity作为基本活动并获得错误。然后我使用活动,它的工作原理。 在我看来,你的代码用于Theme.Holo的主题,现在我们使用Theme.AppCompat。因此,如果您想要更改,请参考Changing Background and text color of AppCompat Light DarkActionBar Theme on android。 它适合我。祝你好运。

答案 8 :(得分:0)

似乎您使用了style而不是themeStyles and themes differ。所以替换

<style name="AppTheme" parent="android:style/Theme.Holo.Light">

使用

<style name="AppTheme" parent="android:Theme.Light">

答案 9 :(得分:0)

我不知道解决方案,但我可以用这种方法改变白色和黑色之间的文字颜色。

所以,在styles.xml中你有:

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
        <item name="colorPrimary">#673AB7</item>
        <item name="colorPrimaryDark">#512DA8</item>
        <item name="colorAccent">#FF4081</item>
    </style>
</resources>

如果您将parent =“...”内的内容更改为深色或浅色主题,则会将文本颜色调整为这些主题。例如,现在你有一个黑暗的主题,文本是白色的,但当我改为“Theme.AppCompat.Light”时,文字颜色变黑。

希望它在某种程度上有所帮助。

答案 10 :(得分:0)

Activity主题更改为:

<style name="ThemeName" parent="android:Theme.Holo.Light">

   <item name="android:actionMenuTextColor">@color/white</item>

</style>

答案 11 :(得分:0)

遇到这个问题,终于解决了。 在您的style.xml中,不要为工具栏指定背景色。 然后在每个layout.xml文件中定义颜色:

<android.support.v7.widget.Toolbar
    android:id="@+id/my_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="#B678EE"
    android:elevation="4dp"
    android:theme="@style/ToolbarTheme"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

这使您可以灵活地根据需要根据活动轻松地设置不同的操作栏颜色。

答案 12 :(得分:0)

这是一个可用的代码。请遵循此代码。

<style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorApp</item>
</style>

<style name="TextAppearance.AppCompat.Widget.ActionBar.Title" parent="@android:style/TextAppearance">
    <item name="android:textSize">23dp</item>
    <item name="android:textColor">@color/YOUR_COLOR</item>
</style>

在第二种样式标签中,我们自定义actionBar标题。

现在在Manifest File的应用程序中添加以上代码

<application
        android:theme="@style/AppTheme">
        <activity>  .....  </activity>
        <activity>  .....  </activity>
</application>