如何更改小吃店的背景颜色?
我正在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();