У меня есть основное занятие, где пользователи могут изменить (через настройки) цвет фона на свой любимый цвет. Моя проблема заключается в том, что я не могу изменить цвет фона любых пользовательских диалоговых окон.
Другие ответы в переполнении стека предполагают:
(a) перекрытие темы по умолчанию на предпочитаемый цвет. Я не думаю, что это подходящее решение в данном случае, так как я знаю, что изменение тем во время работы не рекомендуется.
(b) Изменение стилей.xml (не подходит в данном случае, так как я не могу изменить во время исполнения)
(c) Переопределение класса AlertBuilder (но это оттеняет весь диалог предупреждений)
Ближе всего к изменению цвета я подошёл к удалению заголовка создателя предупреждений и установке фона пользовательского вида на любимый цвет (например, розовый). К сожалению, это приводит к появлению уродливой полосы в верхней и нижней части диалога.
Код включен после изображения, и предложения по изменению фона диалогового окна были бы очень полезны.
Код для внешнего вида по умолчанию
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's 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);
}