我正在开发一款应用,我希望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的回答
答案 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)
答案 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)
我认为这只是你活动的问题。我使用了与你相同的代码,并且它有效。
首先,我使用AppCompatActivity作为基本活动并获得错误。然后我使用活动,它的工作原理。 在我看来,你的代码用于Theme.Holo的主题,现在我们使用Theme.AppCompat。因此,如果您想要更改,请参考Changing Background and text color of AppCompat Light DarkActionBar Theme on android。 它适合我。祝你好运。
答案 8 :(得分:0)
似乎您使用了style
而不是theme
。 Styles 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>