43 votes

Comment changer la couleur du titre de la barre d'action dans le code

J'ai du mal à changer la couleur du titre de la barre d'action Android par programme pour la v11 et les versions ultérieures. Je peux le faire en XML mais je dois le modifier dynamiquement dans le code. Comment dois-je procéder? Merci d'avance.

82voto

adneal Points 12528

L' ActionBar est masqué, ou en d'autres termes, il est interne et il n'est généralement pas possible d'y accéder. Vous pouvez cependant le référencer en utilisant Resources.getIdentifier puis View.findViewById .

Saisissez l'ID de l'action_bar_title

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

Vous pouvez maintenant utiliser l'ID avec un TextView

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

81voto

Willy Points 51

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

35voto

IvanP Points 36

Une autre façon est d'utiliser Html

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

15voto

matiash Points 14851

Si vous utilisez la bibliothèque appcompat v7 (testée 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);

9voto

salcosand Points 231

Si vous utilisez Sherlock Actionbar, vous pouvez utiliser le sherlock-actionbar-id pour les barres d'action prises en charge (Android inférieur à 3.0)

 int titleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");    
if ( 0 == titleId ) 
        titleId = com.actionbarsherlock.R.id.abs__action_bar_title;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X