如何更改小吃店的背景颜色?

我正在DialogFragment中显示快餐栏在alertDialog的正面点击。 这是我的代码片段。

Snackbar snackbar = Snackbar.make(view, "Please enter customer name", Snackbar.LENGTH_LONG) .setAction("Action", null); View sbView = snackbar.getView(); sbView.setBackgroundColor(Color.BLACK); snackbar.show(); 

你可以看到我的小吃店背景颜色呈现白色

我将对话框的视图传递给快餐栏。 我想要背景颜色黑色? 我怎样才能做到这一点? 我在DialogFragment中返回alertDialog。 我正在设置的对话框的主题如下

 <style name="MyAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> <!-- Used for the buttons --> <item name="colorAccent">@color/accent</item> <!-- Used for the title and text --> <item name="android:textColorPrimary">@color/primary</item> <!-- Used for the background --> <item name="android:background">@color/white</item> </style> 

虽然我设置背景颜色为白色的对话框,它应该覆盖设置背景颜色快餐栏。

尝试设置像这样的背景颜色:

 sbView.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.BLACK)); 

它会100%的工作!

你可以这样做

 Snackbar snackbar; snackbar = Snackbar.make(view, "Message", Snackbar.LENGTH_SHORT); View snackBarView = snackbar.getView(); snackBarView.setBackgroundColor(yourColor); TextView textView = (TextView) snackBarView.findViewById(android.support.design.R.id.snackbar_text); textView.setTextColor(textColor); snackbar.show(); 

贝娄代码对于改变消息的文本颜色是有用的。

 Snackbar snackbar = Snackbar.make(rootView, "Enter Your Message",Snackbar.LENGTH_SHORT); View view = snackbar.getView(); TextView tv = (TextView)view.findViewById(android.support.design.R.id.snackbar_text); tv.setTextColor(Color.RED); snackbar.show(); 

第二种方法:你也可以通过改变活动的主题来改变颜色。

我做了一个小工具,所以我可以很容易地通过应用程序自定义有色小吃店。

 package com.yourapppackage.yourapp; import android.support.design.widget.Snackbar; import android.view.View; import android.widget.Button; import android.widget.TextView; public class SnackbarUtils { private int BACKGROUND_COLOR; private int TEXT_COLOR; private int BUTTON_COLOR; private String TEXT; public SnackbarUtils(String aText, int aBgColor, int aTextColor, int aButtonColor){ this.TEXT = aText; this.BACKGROUND_COLOR = aBgColor; this.TEXT_COLOR = aTextColor; this.BUTTON_COLOR = aButtonColor; } public Snackbar snackieBar(){ Snackbar snackie = Snackbar.make(MainActivity.getInstance().findViewById(android.R.id.content), TEXT, Snackbar.LENGTH_LONG); View snackView = snackie.getView(); TextView snackViewText = (TextView) snackView.findViewById(android.support.design.R.id.snackbar_text); Button snackViewButton = (Button) snackView.findViewById(android.support.design.R.id.snackbar_action); snackView.setBackgroundColor(BACKGROUND_COLOR); snackViewText.setTextColor(TEXT_COLOR); snackViewButton.setTextColor(BUTTON_COLOR); return snackie; } } 

然后使用它,像这样的应用程序中的任何地方:

 new SnackbarUtils("This is the text displayed", Color.RED, Color.BLACK, Color.YELLOW).snackieBar().setAction("OTAY", v -> { //donothing }).show(); 

把它放在一个Utility类中:

 public class Utility { public static void showSnackBar(Context context, View view, String text) { Snackbar sb = Snackbar.make(view, text, Snackbar.LENGTH_SHORT); sb.getView().setBackgroundColor(ContextCompat.getColor(context, R.color.colorAccent)); sb.show(); } } 

像这样使用:

 Utility.showSnackBar(getApplicationContext(), findViewById(android.R.id.content), "Add success!!!"); 
 public class CustomBar { public static void show(View view, String message, boolean isLong) { Snackbar s = Snackbar.make(view, message, isLong ? Snackbar.LENGTH_LONG : Snackbar.LENGTH_SHORT); s.getView().setBackgroundColor(ContextCompat.getColor(view.getContext(), R.color.red_900)); s.show(); } public static void show(View view, @StringRes int message, boolean isLong) { Snackbar s = Snackbar.make(view, message, isLong ? Snackbar.LENGTH_LONG : Snackbar.LENGTH_SHORT); s.getView().setBackgroundColor(ContextCompat.getColor(view.getContext(), R.color.red_900)); s.show(); } 

}

这太晚了,但如果有人仍然需要帮助。 这是工作解决scheme。

  Snackbar snackbar = Snackbar.make(mainView, text, Snackbar.LENGTH_LONG); View snackBarView = snackbar.getView(); snackBarView.setBackgroundColor(context.getResources().getColor(R.color.btn_background_color)); snackbar.show();