У меня есть основной вид деятельности, когда пользователи могут изменять (с помощью настроек) цвет фона в их любимом цвете. Моя проблема заключается в том, что я не могу изменить цвет фона любых пользовательских диалогов.
Другие ответы в переполнении стека позволяют:
(a) превышение темы по умолчанию до предпочтительного цвета. Я не думаю, что это подходящее решение в этом случае, поскольку я знаю, что изменение тем во время выполнения не рекомендуется.
(b) Изменение в styles.xml (не подходит в этом случае, поскольку я не могу изменить во время выполнения)
(c) Переопределение класса AlertBuilder (но это отображает весь диалог предупреждения)
Это самое близкое, что я пришел к изменению цвета, - это удаление заголовка создателя предупреждений и настройка фона настраиваемого представления на любимый цвет (например, pink). К сожалению, это дает уродливую полосу в верхней и нижней части диалогового окна.
Код включается после изображения, очень приветствуются предложения по изменению фона диалога.
Код для внешнего вида
protected Dialog onCreateDialog(int dialogId) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
final View viewMessEdit = inflater.inflate(R.layout.example,(ViewGroup) findViewById(R.id.dialog_mess_edit_root));
builder.setView(viewMessEdit);
builder.setTitle("Alert builder title");
}
Код для изменения цвета фона настраиваемых диалоговых окон (и заголовок создателя предупреждений удаляется)
protected Dialog onCreateDialog(int dialogId) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
final View viewMessEdit = inflater.inflate(R.layout.example,(ViewGroup) findViewById(R.id.dialog_mess_edit_root));
builder.setView(viewMessEdit);
viewMessEdit.setBackgroundResource(R.color.pink_dark);
}