因此,我已经开始在设计支持库中使用新的 Snackbar,但是我发现,当您在主题中定义“ android: textColor”时,它将应用于 Snackbar 的文本颜色。如果您的主文本颜色是深色,这显然是一个问题。
有人知道解决这个问题的方法吗? 或者有什么建议告诉我应该怎样给短信上色?
编辑2017年1月: (回复)
虽然有一些自定义的解决方案来修复下面的问题,但是提供正确的方法来主题 Snackbar 可能是好的。
首先,您可能根本不应该在主题中定义 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 在可能的支持库更新中保持最后的状态,请这样做)。
或者,看看下面类似的答案,也许更快的答案来解决你的问题。