41

我想更改我的快餐栏的操作文本颜色,但由于某种原因它不起作用。

我使用下面的代码来显示一个小吃店:

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

4 回答 4

85

的参数setActionTextColorint表示颜色的,而不是资源 ID。

而不是这个:

.setActionTextColor(R.color.yellow)

尝试:

.setActionTextColor(Color.YELLOW)

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

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

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

于 2015-06-29T13:28:30.190 回答
28

采用

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

而不仅仅是

.setActionTextColor(R.color.red)
于 2015-07-25T13:17:46.473 回答
6

以上答案都没有帮助我。我找到了这个解决方案,它通过手动更改 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();
于 2017-03-30T15:11:17.273 回答
1

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

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));
于 2020-08-30T00:27:13.543 回答