22

Atıştırmalık çubuğum için eylem metni rengini değiştirmek istiyorum, ancak bir nedenden dolayı çalışmıyor.Snackbar eylem metni rengi değişmiyor

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

cevap

42

setActionTextColor argüman renk değil, kaynak kimliği temsil int olup:

bir snackbar görüntülemek için aşağıdaki kodu kullanır. Bunun yerine

:

.setActionTextColor(R.color.yellow) 

deneyin: Yine kaynaklarını kullanmak istiyorsanız

.setActionTextColor(Color.YELLOW) 

, deneyin:

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

Not: ContextCompat kullanmak için, sana farz build.gradle dosyanıza Destek kütüphanesi eklediniz (Bu bağlantı zaten varsa (v7) libra ry de).

+2

snackbar.setActionTextColor (GetResources() getColor (R.color.colorPrimary).) Çalışır; Benim için çalıştı .... – Prasad

+0

Bu yalnızca OP'nin sarı "tanımı" sistemle aynıysa çalışır. – tir38

+0

Kullanımdan kaldırılan getColor hakkında @SuppressWarning kullanmayın, bunun yerine ContextCompat.getColor (context, R.color.youColor) –

24

Kullanım

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

yerine yukarıdaki cevapların sadece

.setActionTextColor(R.color.red) 
+15

'getColor (int)' kullanımdan kaldırılmıştır ContextCompat.getColor (context, R.color.red) 'yerine. – Hafez

2

Yok bana yardımcı oldu. Bu çözümü buldum ve TextView'un metin rengi elle değiştirerek

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