Как изменить цвет фона в закусочной?

Я показываю snackbar в DialogFragment внутри положительного щелчка alertDialog.Here мой фрагмент кода.

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(); 

Поскольку вы можете видеть, что мой цвет фона snackbars показывает белый цвет

Я передаю представление диалогового окна в snackbar.I хочу, чтобы цвет фона черный? Как я могу это сделать? Простите за мой плохой английский. Я возвращаю alertDialog в DialogFragment. И тему, которую я устанавливаю в диалог, как показано ниже

 <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> 

Хотя я устанавливаю цвет фона в белый для диалога, он должен переопределить, установив цвет фона в закусочную. Пожалуйста, извините за плохой английский.

Solutions Collecting From Web of "Как изменить цвет фона в закусочной?"

Попробуйте установить цвет фона следующим образом:

 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(); 

Код Bellow полезен для изменения цвета текста сообщения.

 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(); 

Второй способ: вы можете изменить цвет, изменив тему активности.

Поместите его в класс 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!!!"); 

Я сделал небольшой класс utils, поэтому я могу легко сделать пользовательские цветные snackbars через приложение.

 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(); 
 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(); } 

}