Snackbar动作文本颜色不变

时间:2015-06-29 13:17:43

标签: android colors android-design-library androiddesignsupport android-snackbar

我想更改我的零食栏的动作文字颜色,但由于某种原因它无法正常工作。

我使用以下代码显示快餐栏:

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

4 个答案:

答案 0 :(得分:62)

setActionTextColor的参数是代表颜色的int,而不是资源ID。

而不是:

.setActionTextColor(R.color.yellow)

尝试:

.setActionTextColor(Color.YELLOW)

如果您仍想使用资源,请尝试:

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

注意:要使用ContextCompat,我假设您已将支持库包含在build.gradle文件中(如果您已经有appcompat(v7)库,那么它是可选的。)

答案 1 :(得分:24)

使用

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

而不仅仅是

.setActionTextColor(R.color.red)

答案 2 :(得分:4)

以上答案都没有帮助我。 我找到了这个解决方案,它通过手动更改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();

答案 3 :(得分:0)

如果要更改操作按钮的文本颜色。

snackbar.setActionTextColor(getResources().getColor(R.color.colorAccent));

如果要更改操作按钮的背景色。

View sbView = snackbar.getView();
Button button=
(Button) sbView.findViewById(com.google.android.material.R.id.snackbar_action);
button.setBackgroundColor(getResources().getColor(R.color.white));