2012-03-29 10 views

Odpowiedz

81

Identyfikator tytułu ActionBar jest ukryty, lub innymi słowy, jest wewnętrzny i dostęp do niego nie może być wykonany typowo. Możesz odwoływać się do niego, używając Resources.getIdentifier, a następnie View.findViewById.

Grab identyfikator dla action_bar_title

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

Teraz można użyć identyfikatora z TextView

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

To nie działa na mojej maszynie Moto Razor. – antonio081014

+0

To nie działa dla mnie:/ – Si8

+1

To coś nie działa dla mnie. Aby się upewnić, nie ma statycznego tytułu w pasku akcji, więc używam "action_bar_title" w wywołaniu metody getIdentifier. To samo dotyczy "id" i "android". Używam biblioteki v7-appcompat. – MSIslam

9

Jeśli używasz Sherlock Actionbar można użyć Sherlock-actionbar-id dla obsługiwanych pasków działań (Android poniżej 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

Cant po prostu zrób to: getSherlockActivity(). GetSupportActionBar(). setTitle ("TITLE"); ?? – marchinram

+2

Ponieważ możesz to zrobić, gdy chcesz tylko zmienić tytuł. ale to pytanie miało zmienić kolor tytułu. – salcosand

+0

Dlatego musisz pobrać TextView w ActionBar i aby uzyskać tam potrzebny identyfikator dla TextView. Identyfikator jest inny w Sherlock ActionBar i idiv. – salcosand

24

Innym sposobem jest za pomocą HTML

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

Ta odpowiedź jest moim zdaniem najbardziej optymalna. – Ercan

+2

To nadal jest najbardziej niezawodny sposób, aby go ustawić. – DarkWolffe

60

Można użyć SpannableString i ForegroundColorSpan ustawić kolor tytułu

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

To powinno być przyjęte rozwiązanie, poleganie na wewnętrznym API (action_bar_title id) jest złym pomysłem, ponieważ może ulec zmianie bez powiadomienia. – fernandohur

+1

To jest najlepsza odpowiedź. W szczególności na KitKat przy użyciu biblioteki błędów appcompat v7 w rozwiązaniu action_bar_title id. Użyj tej odpowiedzi! – Codeversed

+0

działa jak wdzięk – Dien

10

przypadku korzystania v7 appcompat library (testowane z R22), to można nazwać setTitleTextColor() na obiekcie Toolbar, który zastępuje pasek działań dla wszystkich poziomów interfejsu API. Na przykład:

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

Po uaktualnieniu mojego projektu do kompilacji dla Lollipop ta odpowiedź jest jedyną poprawną (Adneal rozwiązuje odpowiedź) – Fraser

+1

Używam biblioteki pomocy 21.0.3 i to już nie działa, jeśli oczywiście nie popełniłem żadnego błędu. Na początku spróbuj rozwiązania IvanP's. –

+0

@ ČikićNenad Naprawiono dla appcompat r22 (przynajmniej powinien działać również z r21). – matiash

Powiązane problemy