web-dev-qa-db-fra.com

La couleur du texte de l'action Snackbar ne change pas

Je souhaite modifier la couleur du texte d'action de mon snack-bar, mais cela ne fonctionne pas pour une raison quelconque.

J'utilise le code suivant pour afficher un snack-bar:

Snackbar.make(findViewById(R.id.root), "text", Snackbar.LENGTH_LONG).setActionTextColor(R.color.yellow).setAction("OK", new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    }
}).show();
35
qwertz

L'argument de setActionTextColor est le int qui représente la couleur, pas l'ID de ressource.

Au lieu de cela:

.setActionTextColor(R.color.yellow)

essayer:

.setActionTextColor(Color.YELLOW)

Si vous souhaitez quand même utiliser des ressources, essayez:

.setActionTextColor(ContextCompat.getColor(context, R.color.color_name));

Remarque: Pour utiliser ContextCompat, je suppose que vous avez inclus la bibliothèque de support à votre build.gradle fichier (Il est facultatif si vous avez déjà une bibliothèque compatible avec les applications (v7)).

64
Anand Singh

Utilisation

.setActionTextColor(getResources().getColor(R.color.red))

au lieu de juste

.setActionTextColor(R.color.red)
27
Adam Purser

Aucune des réponses ci-dessus ne m'a aidé. J'ai trouvé cette solution, et cela fonctionne en changeant manuellement la couleur du texte de TextView

Snackbar snack = Snackbar.make(v, "Snackbar message", Snackbar.LENGTH_LONG);
View view = snack.getView();
TextView tv = (TextView) view.findViewById(Android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
snack.show();
4