2012-03-29 236 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