J'ai du mal à changer la couleur du titre de la barre d'action androïdes par programme pour la version 11 et les versions ultérieures. Je peux le faire en xml mais je dois le changer dynamiquement dans le code. Comment dois-je procéder? Merci d'avance.
L'ID de titre ActionBar
est masqué, ou en d'autres termes, il est interne et l'accès ne peut pas être fait de manière typique. Vous pouvez le référencer en utilisant Resources.getIdentifier
puis View.findViewById
bien que.
Prenez l'ID de l'action_bar_title
int titleId = getResources().getIdentifier("action_bar_title", "id", "Android");
Maintenant, vous pouvez utiliser l'ID avec un TextView
TextView abTitle = (TextView) findViewById(titleId);
abTitle.setTextColor(colorId);
Vous pouvez utiliser un SpannableString et ForegroundColorSpan pour définir la couleur du titre
Spannable text = new SpannableString(actionBar.getTitle());
text.setSpan(new ForegroundColorSpan(Color.BLUE), 0, text.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
actionBar.setTitle(text);
Une autre façon est d'utiliser Html
getSupportActionBar().setTitle((Html.fromHtml("<font color=\"#FF4444\">" + getString(R.string.some_string) + "</font>")));
Si vous utilisez bibliothèque v7 appcompat (testé avec r22), vous pouvez appeler setTitleTextColor()
sur l'objet Toolbar
qui remplace la barre d'action pour tous les niveaux d'API. Par exemple:
Toolbar actionBarToolbar = (Toolbar)activity.findViewById(R.id.action_bar);
if (actionBarToolbar != null)
actionBarToolbar.setTitleTextColor(Color.RED);
Si vous utilisez Sherlock Actionbar vous pouvez utiliser le sherlock-actionbar-id pour les barres d'action prises en charge (Android ci-dessous 3.0)
int titleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "Android");
if ( 0 == titleId )
titleId = com.actionbarsherlock.R.id.abs__action_bar_title;