В моем приложении много диалоговых окон с предупреждениями. Это макет по умолчанию, но я добавляю положительные и отрицательные кнопки в диалог. Таким образом, кнопки получают цвет текста по умолчанию Android 5 (зеленый). Я пытался изменить это безуспешно. Есть идеи, как изменить цвет текста?
Мой Пользовательский диалог:
public class MyCustomDialog extends AlertDialog.Builder {
public MyCustomDialog(Context context,String title,String message) {
super(context);
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View viewDialog = inflater.inflate(R.layout.dialog_simple, null, false);
TextView titleTextView = (TextView)viewDialog.findViewById(R.id.title);
titleTextView.setText(title);
TextView messageTextView = (TextView)viewDialog.findViewById(R.id.message);
messageTextView.setText(message);
this.setCancelable(false);
this.setView(viewDialog);
} }
Создание диалога:
MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage);
builder.setNegativeButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
...
}
}).show();
Эта негативная кнопка является диалоговой кнопкой по умолчанию и принимает зеленый цвет по умолчанию от Android 5 Lollipop.
Большое спасибо
Ответы:
Вы можете
AlertDialog
сначала попытаться создать объект, а затем использовать его, чтобы настроить изменение цвета кнопки, а затем показать его. (Обратите внимание , что наbuilder
объект вместо вызоваshow()
мы называем ,create()
чтобы получитьAlertDialog
объект:Причина, по которой вы должны сделать это
onShow()
и не можете просто получить эту кнопку после создания диалогового окна, заключается в том, что кнопка еще не была создана.Я изменился,
AlertDialog.BUTTON_POSITIVE
чтобыAlertDialog.BUTTON_NEGATIVE
отразить изменение в вашем вопросе. Хотя странно, что кнопка «ОК» будет отрицательной кнопкой. Обычно это положительная кнопка.источник
Вот естественный способ сделать это со стилями:
Если ваш
AppTheme
наследуется отTheme.MaterialComponents
, то:Если ваш
AppTheme
наследуется отTheme.AppCompat
:Используйте свой
AlertDialogTheme
в своемAppTheme
или в конструкторе
источник
com.google.android.material:material:1.0.0-beta01
и я использую Theme.MaterialComponents.Light.Dialog.AlertЦвет кнопок и другой текст также можно изменить с помощью темы:
Результат:
источник
android:
деталь изandroid:alertDialogTheme
и изandroid:colorAccent
.Самое простое решение:
источник
AlertDialog.BUTTON_NEGATIVE
и т. Д.Есть два способа изменить цвет кнопки диалога.
Основной способ
Если вы просто хотите изменить деятельность, напишите две строки ниже
alertDialog.show();
рекомендуемые
Я рекомендую добавить тему для
AlertDialog
in,styles.xml
чтобы вам не приходилось писать один и тот же код снова и снова при каждом вызове действия / диалога. Вы можете просто создать стиль и применить эту тему в диалоговом окне. Поэтому, когда вы захотите изменить цвет окна AlertDialog, просто измените цвет в файле styles.xml, и все диалоговые окна будут обновлены во всем приложении.И применить тему в
AlertDialog.Builder
источник
Если вы хотите изменить цвет текста кнопок (положительный, отрицательный, нейтральный), просто добавьте свой собственный стиль диалога:
Итак, ваш стиль диалога должен выглядеть так:
источник
Цвет кнопок и другого текста также можно изменить с помощью appcompat:
источник
В теме / стиле вашего приложения добавьте следующие строки:
Затем добавьте следующие стили:
Использование этого метода избавляет от необходимости устанавливать тему в конструкторе AlertDialog.
источник
Просто как примечание:
Цвет кнопок (и весь стиль) также зависит от текущей темы, которая может быть довольно разной, если вы используете
или
(Лучше использовать второй)
источник
Вот как вы это делаете: Простой способ
источник
для меня это было иначе, я использовал тему кнопки
и потому что
там был белый цвет… я не видел никакого текста кнопки (кнопки диалога в основном тоже кнопки). там мы идем, изменили это, исправили это.
источник