22

Desidero modificare il colore del testo dell'azione per la mia barra degli snack, ma per qualche motivo non funziona.Il colore del testo dell'azione della barra snack non cambia

Io uso il seguente codice per visualizzare uno snack:

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

risposta

42

L'argomento della setActionTextColor è la int che rappresenta il colore, non l'ID di risorsa.

Invece di questo:

.setActionTextColor(R.color.yellow) 

prova:

.setActionTextColor(Color.YELLOW) 

Se si desidera utilizzare le risorse in ogni caso, provare:

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

Nota: per utilizzare ContextCompat, ti assumere hai incluso la libreria di supporto nel tuo file build.gradle (è facoltativo se hai già la libra appcompat (v7) anche tu).

+2

snackbar.setActionTextColor (getResources() getColor (R.color.colorPrimary).); Ha funzionato per me ....! – Prasad

+0

Funziona solo se la "definizione" dell'OP di giallo è la stessa del sistema. – tir38

+0

Informazioni su getColor deprecato, non utilizzare @SuppressWarning ma invece ContextCompat.getColor (context, R.color.youColor) –

24

Usa

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

invece di

.setActionTextColor(R.color.red) 
+15

'getColor (int)' è obsoleto usare 'ContextCompat.getColor (context, R.color.red) 'invece. – Hafez

2

Nessuna delle risposte di cui sopra mi ha aiutato. ho trovato questa soluzione, e funziona modificando manualmente il colore del testo del 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(); 
Problemi correlati