如何更改代码中的操作栏标题颜色

我遇到麻烦更改android的行动栏标题颜色编程为V11和以上。 我可以用xml来完成,但是需要在代码中dynamic地改变它。 我应该怎么做呢? 提前致谢。

ActionBar标题ID是隐藏的,换句话说,它是内部的,访问它是不能做的。 你可以使用Resources.getIdentifier然后View.findViewById来引用它。

抓住action_bar_title的ID

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

现在,您可以使用ID和TextView

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

您可以使用SpannableString和ForegroundColorSpan来设置标题的颜色

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

另一种方法是使用Html

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

如果使用v7 appcompat库 (使用r22进行testing),则可以在Toolbar对象上调用setTitleTextColor() ,将所有API级别replace为操作栏。 例如:

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

如果您使用Sherlock操作栏 ,则可以使用sherlock-actionbar-id作为支持的操作栏(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;