所以我开始在设计支持库中使用新的 Snackbar,但是我发现当你在你的主题中定义“android:textColor”时,它适用于snackbar 的文本颜色。如果您的主要文本颜色较暗,这显然是一个问题。
有谁知道解决这个问题的方法或对我应该如何为文本着色有建议?
编辑 2017 年 1 月:(回答后)
虽然有一些自定义解决方案可以解决以下问题,但提供正确的 Snackbars 主题方法可能会很好。
首先,您可能根本不应该android:textColor
在主题中定义(除非您真的知道使用主题的范围)。这基本上设置了连接到您的主题的每个视图的文本颜色。如果要在视图中定义非默认文本颜色,请android:primaryTextColor
在自定义视图中使用并引用该属性。
但是,为了将主题应用于Snackbar
,请参考第三方材料文档中的此质量指南:http: //www.materialdoc.com/snackbar/(遵循程序化主题实现,使其不依赖于 xml 样式)
以供参考:
// create instance
Snackbar snackbar = Snackbar.make(view, text, duration);
// set action button color
snackbar.setActionTextColor(getResources().getColor(R.color.indigo));
// get snackbar view
View snackbarView = snackbar.getView();
// change snackbar text color
int snackbarTextId = android.support.design.R.id.snackbar_text;
TextView textView = (TextView)snackbarView.findViewById(snackbarTextId);
textView.setTextColor(getResources().getColor(R.color.indigo));
// change snackbar background
snackbarView.setBackgroundColor(Color.MAGENTA);
(您也可以创建自己的自定义Snackbar
布局,请参阅上面的链接。如果这种方法感觉太老套,并且您希望通过可能的支持库更新让您的自定义 Snackbar 持续存在,请这样做)。
或者,请参阅下面的答案以获得类似且可能更快的答案来解决您的问题。