Snackbar动作文本颜色不变

qwe*_*rtz 35 android colors android-design-library android-snackbar androiddesignsupport

我想更改我的零食栏的动作文字颜色,但由于某种原因它不起作用.

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

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();
Run Code Online (Sandbox Code Playgroud)

Ana*_*ngh 67

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

而不是这个:

.setActionTextColor(R.color.yellow)
Run Code Online (Sandbox Code Playgroud)

尝试:

.setActionTextColor(Color.YELLOW)
Run Code Online (Sandbox Code Playgroud)

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

.setActionTextColor(ContextCompat.getColor(context, R.color.color_name));
Run Code Online (Sandbox Code Playgroud)

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

  • snackbar.setActionTextColor(getResources()的getColor(R.color.colorPrimary)); 为我工作....! (3认同)

Ada*_*ser 27

使用

.setActionTextColor(getResources().getColor(R.color.red))
Run Code Online (Sandbox Code Playgroud)

而不仅仅是

.setActionTextColor(R.color.red)
Run Code Online (Sandbox Code Playgroud)

  • 不推荐使用`getColor(int)`而使用`ContextCompat.getColor(context,R.color.red)`. (19认同)

Jos*_*dez 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();
Run Code Online (Sandbox Code Playgroud)