因此,我开始在设计支持库中使用新的Snackbar,但是我发现,当您在主题中定义“ android:textColor”时,它将应用于快餐栏的文本颜色。如果您的主要文字颜色为深色,这显然是一个问题。
有谁知道解决这个问题的方法或对我应该如何为文本上色的建议?
编辑2017年1月:(后答案)
虽然有一些自定义解决方案可以解决以下问题,但是最好提供正确的主题小吃店方法。
首先,您可能根本不应android:textColor
在主题中进行定义(除非您真的知道使用主题的范围)。这设置了基本上每个连接到主题的视图的文本颜色。如果要在非默认视图中定义文本颜色,请android:primaryTextColor
在自定义视图中使用并引用该属性。
但是,要将主题应用到Snackbar
,请参考第三方材料doc上的本质量指南: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持续到可能的支持库更新,则可以这样做)。
另外,请参见下面的答案,以获取解决问题的类似且可能更快的答案。
android:textColorPrimary