2012-03-29 73 views

回答

81

ActionBar标题ID是隐藏的,或者换句话说,它是内部的,并且通常无法访问它。不过,您可以使用Resources.getIdentifier然后View.findViewById来引用它。

抓住ID为action_bar_title

int titleId = getResources().getIdentifier("action_bar_title", "id", "android"); 

现在,如果你使用Sherlock Actionbar您可以使用夏洛克 - 动作条-ID可以使用ID与TextView

TextView abTitle = (TextView) findViewById(titleId); 
abTitle.setTextColor(colorId); 
+0

它不适用于我的摩托剃刀。 – antonio081014 2012-10-29 22:06:38

+0

它不适用于我:/ – Si8 2013-12-05 22:27:27

+1

这个东西对我来说不起作用。为了确保在actionbar中没有静态标题,所以我在getIdentifier方法调用中使用了“action_bar_title”。 “id”和“android”也一样。我正在使用v7-appcompat库。 – MSIslam 2014-01-02 17:36:25

9

支持的操作条(Android 3.0以下)

int titleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");  
if (0 == titleId) 
     titleId = com.actionbarsherlock.R.id.abs__action_bar_title; 
+1

广东话只是这样做:getSherlockActivity()getSupportActionBar()。的setTitle( “TITLE”); ?? – marchinram 2013-04-04 05:27:25

+2

原因,你可以这样做,当你只是想更改标题。但这个问题即将改变标题颜色。 – salcosand 2013-04-12 11:08:30

+0

因此,你需要得到ActionBar中TextView的,并到那里你需要TextView的标识。而且这个ID在Sherlock ActionBar和那个本质上是不同的。 – salcosand 2013-04-12 11:15:30

24

另一种方式是使用HTML

getSupportActionBar().setTitle((Html.fromHtml("<font color=\"#FF4444\">" + getString(R.string.some_string) + "</font>"))); 
+2

这是我认为最符合防弹要求的答案。 – Ercan 2014-12-05 13:57:40

+2

这仍然是我设置它的最可靠的方法。 – DarkWolffe 2015-04-08 20:26:42

60

您可以使用SpannableString和ForegroundColorSpan设置标题

Spannable text = new SpannableString(actionBar.getTitle()); 
    text.setSpan(new ForegroundColorSpan(Color.BLUE), 0, text.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
    actionBar.setTitle(text); 
+11

这应该是公认的解决方案,依靠内部API(action_bar_title id)是一个坏主意,因为它可能会在没有通知的情况下更改。 – fernandohur 2014-09-04 23:28:21

+1

这是最好的答案。特别针对使用v7 appcompat库的KitKat action_bar_title id解决方案中的FAIL。使用这个答案! – Codeversed 2014-11-26 04:12:34

+0

作品像一个魅力 – Dien 2016-02-14 04:41:22

10

的颜色如果使用v7 appcompat library(与R22进行测试),那么你可以调用setTitleTextColor()Toolbar对象替换所有API级别的操作栏。例如:

Toolbar actionBarToolbar = (Toolbar)activity.findViewById(R.id.action_bar); 
if (actionBarToolbar != null) 
    actionBarToolbar.setTitleTextColor(Color.RED); 
+0

当升级我的项目编译为棒棒糖,这个答案是唯一正确的(Adneal的答案崩溃) – Fraser 2014-12-21 21:23:21

+1

我正在使用支持库21.0.3,这不工作了,如果我没有做任何明显的错误。首先尝试IvanP的解决方案正在工作。 – 2015-02-18 03:43:31

+0

@ČikićNenad固定用于appcompat r22(至少也应该与r21一起使用)。 – matiash 2015-03-30 16:15:26