如何在ActionBarSherlock中设置标题颜色?

15

如何在 ActionBarSherlock 中设置标题颜色?

我应该使用哪些主题属性?


文本的颜色(标题);还是条形的颜色? - Davek804
2
<item name="android:actionBarStyle">@style/CustomActionBarStyle</item> 我正在使用最低版本7,上述的andriod前缀不支持,出现错误需要最低SDK版本11。是否有其他建议来设置标题栏背景颜色或图像。 - ramesh
5个回答

43

您可以使用以下方法轻松完成此操作:

getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffffff'>App Name</font>"));

好的答案。在所有级别的API中都能正常工作,没有任何问题。 - Santhosh
1
在处理样式并且(在Stack Overflow上仔细查找后)没有使其工作之后,这种方法有效了!谢谢! - shecodesthings
1
简单而有效! - almyz125
完美、简单、有效的技巧!!谢谢。 - Gaurav Arora
看起来简单而优雅的答案。但对我不起作用...不知道为什么。 - Ashokchakravarthi Nagarajan

35

来自ActionBarSherlock网站

父主题

为了使定制的操作栏实现功能,您的应用程序必须使用Theme.Sherlock、Theme.Sherlock.Light或Theme.Sherlock.Light.DarkActionBar,或者您的自定义主题必须以上述其中之一作为其父级。

镜像属性

由于Android主题系统的限制,任何主题定制必须声明两个属性。普通的带有android前缀的属性将应用于本地操作栏,而未带前缀的属性适用于自定义实现...

简而言之,这意味着在样式化操作栏时需要省略android:前缀。

定制标题颜色

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="YOURTHEME" parent="Theme.Sherlock.Light">
<item name="android:actionBarStyle">@style/YOURTHEME.ActionBarStyle</item>
<item name="actionBarStyle">@style/YOURTHEME.ActionBarStyle</item>
</style>

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

<style name="YOURTHEME.ActionBar.TitleTextStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Title">
<item name="android:textColor">@color/YOUR_COLOR</item>
<item name="textColor">@color/YOUR_COLOR</item>
</style>
</resources>

注意

我没有测试过这个代码。此外,在将来在 SO 发布问题之前,你应该先尝试搜索,看看是否有类似的解答。同时可以参考以下链接:"你尝试了什么?"


是的,我知道,但是我没有找到关于"titleTextStyle"属性的信息,谢谢! - Sander Versluys
4
不需要,您可以删除它。 - icastell
2
Android上有2个错误:actionBarStyle和titleTextStyle:“android:actionBarStyle需要API级别11(当前最低级别为10)”。如何解决这个问题? - kolobok
如果你的minSdkVersion小于11,则需要两个文件:values/styles.xml和values-v11/styles.xml。以android:-为前缀的项目应放入values-v11/styles.xml。 - Michael Chang

24

我已经通过以下方式修改了标题颜色:

在Styles.xml文件中,我添加了这些样式:

<style name="Theme.Styled" parent="@style/Theme.Sherlock.Light">
    <item name="actionBarStyle">@style/CustomActionBarStyle</item>
    <item name="android:actionBarStyle">@style/CustomActionBarStyle</item>
</style>

<style name="CustomActionBarStyle" parent="@style/Widget.Sherlock.ActionBar">
    <item name="titleTextStyle">@style/CustomTitleColorBar</item>
    <item name="android:titleTextStyle">@style/CustomTitleColorBar</item>
</style>

<!-- Style for the color title bar -->
<style name="CustomTitleColorBar" parent="@style/TextAppearance.Sherlock.Widget.ActionBar.Title">
    <item name="android:textColor">@android:color/white</item>
</style>

我最后做的一件事是在activity中设置主题:

public static int THEME = R.style.Theme_Styled;

这行代码要写在super.onCreate()方法之前

setTheme(THEME);

就这样了。


你需要在父级样式中添加“@style/”吗?如果没有也能正常工作吗? - Pepster
我如何使用这个解决方案更改背景? - TharakaNirmana

1
我认为你正在尝试更改在菜单上的文本颜色,而不是在ActionBarSherlock中的标题文本颜色。

当您使用getSupportActionBar().SetTitle("My Title")来设置这段文本的样式时,应该使用代码@Archie.bpgc。他的答案是正确的,但我认为你需要以下代码:

<style name="MyTheme.TitleTextStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Menu">
    <item name="android:textColor">@color/white</item>
    <item name="android:textSize">24sp</item>
    <item name="android:gravity">center</item>
</style>

你只需要将parent ="TextAppearance.Sherlock.Widget.ActionBar.Title">替换成parent = "TextAppearance.Sherlock.Widget.ActionBar.Menu">


1

您可以从两个地方进行操作,要么在style.xml中,要么通过编程实现。
1.从style.xml中进行操作

2.或者在代码中实现

int titleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");  
TextView yourTextView = (TextView)findViewById(titleId);
yourTextView.setTextColor(getResources().getColor(R.color.myColor));

或者使用ActionBar,您也可以实现这一点。
getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffffff'>App Name</font>"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接