22

Я хочу изменить цвет текста действия для моей закусочной, но по какой-то причине он не работает.Цвет текста операции с закусочной не меняется

Я использую следующий код для отображения закусочной:

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

ответ

42

Аргумент setActionTextColor является int, что представляет цвет, а не идентификатор ресурса.

Вместо этого:

.setActionTextColor(R.color.yellow) 

попробовать:

.setActionTextColor(Color.YELLOW) 

Если вы все равно хотите использовать ресурсы, попробуйте:

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

Примечание: Для того, чтобы использовать ContextCompat, я предполагаю, что вы включили библиотеку поддержки в ваш файл build.gradle (это необязательно, если у вас уже есть appcompat (v7) libra ry тоже).

+2

snackbar.setActionTextColor (GetResources() GetColor (R.color.colorPrimary).); Работал для меня ....! – Prasad

+0

Это работает только в том случае, если определение «желтого» определения OP совпадает с системой. – tir38

+0

О том, что getColor устарел, не используйте @SuppressWarning, но вместо этого ContextCompat.getColor (context, R.color.youColor) –

24

Использование

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

вместо того, чтобы просто

.setActionTextColor(R.color.red) 
+15

'getColor (int)' устаревшее использование 'ContextCompat.getColor (context, R.color.red) вместо этого. – Hafez

2

Ни один из вышеуказанных ответов помогли мне. я нашел это решение, и оно работает путем изменения вручную цвет текста 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();