Как программно изменить цвет фона диалогового окна?

У меня есть основное занятие, где пользователи могут изменить (через настройки) цвет фона на свой любимый цвет. Моя проблема заключается в том, что я не могу изменить цвет фона любых пользовательских диалоговых окон.

Другие ответы в переполнении стека предполагают:

(a) перекрытие темы по умолчанию на предпочитаемый цвет. Я не думаю, что это подходящее решение в данном случае, так как я знаю, что изменение тем во время работы не рекомендуется.

(b) Изменение стилей.xml (не подходит в данном случае, так как я не могу изменить во время исполнения)

(c) Переопределение класса AlertBuilder (но это оттеняет весь диалог предупреждений)

Ближе всего к изменению цвета я подошёл к удалению заголовка создателя предупреждений и установке фона пользовательского вида на любимый цвет (например, розовый). К сожалению, это приводит к появлению уродливой полосы в верхней и нижней части диалога.

Код включен после изображения, и предложения по изменению фона диалогового окна были бы очень полезны.

Dialog appearance

Код для внешнего вида по умолчанию

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

}

18
задан Community 23 May 2017 в 11:54
поделиться