自定义主题干扰快餐栏背景颜色

Kub*_*boå 14 android material-design android-design-library android-snackbar androiddesignsupport

试用新的设计支持库,我添加了一个小吃吧; 但与其主背景不同,文本区域未使用默认值着色#323232.相反,它看起来像这样.它似乎从android:background我自定义主题中定义的值中获取颜色styles.xml,如下所示:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
    <item name="android:background">#4f4f5e</item>
    ...
</style>
Run Code Online (Sandbox Code Playgroud)

如果我试着用它强行着色

View snackbarView = snackbar.getView(); 
snackbarView.setBackgroundColor(Color.YELLOW);
Run Code Online (Sandbox Code Playgroud)

它只影响主背景,像这样,文本背景仍然被自定义主题着色.有没有办法保持我的自定义主题,并有一个标准的小吃吧?谢谢!

agi*_*llo 18

要更改Snackbar的背景颜色,您可以从代码中执行以下操作:

Snackbar snack = Snackbar.make(...);
ViewGroup group = (ViewGroup) snack.getView();
group.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.red));
snack.show();
Run Code Online (Sandbox Code Playgroud)

您可以使用Snackbar的默认颜色代替红色:#323232

  • 如果使用support4库,则可以使用ContextCompat.getColor(getContext(),R.color.colorRed); (3认同)

Pac*_*gmi 7

.setBackgroundColor 允许您更改快餐栏的背景颜色

msnackBar.setBackgroundColor(Color.parseColor("#009688"));
Run Code Online (Sandbox Code Playgroud)

要么

 msnackBar.setBackgroundColor(getResources().getColor(R.color.BLUE)););
Run Code Online (Sandbox Code Playgroud)

是使用设计支持库使用snackbar的完整教程.


小智 7

小吃店包含一个TextView,所以你需要改变两者的背景颜色,就像你已经做的那样改变小吃吧,然后像这样改变TextView:

View snackbarView = snackbar.getView(); 
TextView textView = (TextView)snackbarView.findViewById(android.support.design.R.id.snackbar_text); 
textView.setBackgroundColor(Color.YELLOW);
Run Code Online (Sandbox Code Playgroud)