Как изменить цвет заголовка панели действий в коде

У меня возникли проблемы с программным изменением цвета заголовка actionroids для v11 и выше. Я могу сделать это в xml, но вам нужно динамически изменять его в коде. Как мне это сделать? Заранее спасибо.

Solutions Collecting From Web of "Как изменить цвет заголовка панели действий в коде"

Идентификатор заголовка ActionBar скрыт, или, другими словами, он является внутренним и доступ к нему не может быть выполнен обычным образом. Вы можете ссылаться на него, используя Resources.getIdentifier затем View.findViewById .

Захватите идентификатор для action_bar_title

 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>"))); 

Если вы используете Sherlock Actionbar, вы можете использовать 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; 

Если вы используете библиотеку v7 appcompat (протестирована с r22), вы можете вызвать setTitleTextColor() на объекте Toolbar который заменяет панель действий для всех уровней API. Например:

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