Пользовательская тема для AlertDialog не применяется - PullRequest
0 голосов
/ 28 апреля 2020

Общий стиль для AlertDialogs установлен в themes.xml

<style name="CustomTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
    <item name="alertDialogTheme">@style/ThemeOverlay.AlertDialog</item>
</style>

И ThemeOverlay.AlertDialog выглядит следующим образом:

<style name="ThemeOverlay.AlertDialog" parent="ThemeOverlay.AppCompat.Dialog.Alert">
    ...
    <item name="buttonStyle">@style/AlertDialogButton</item>
    ...
</style>

Однако для одного конкретного диалога в приложении I нужно использовать другой buttonStyle (textColor). Для этого я создал стиль с общим стилем в качестве родителя:

<style name="NewAlertButtonStyle" parent="ThemeOverlay.AlertDialog">
    <item name="buttonStyle">@style/AlertDialogButtonRed</item>
</style>

И тогда AlertDialogButtonRed выглядит следующим образом:

<style name="AlertDialogButtonRed" parent="Widget.AppCompat.Button">
    <item name="android:textColor">@color/red</item>
</style>

И это устанавливается при создании диалоговое окно:

AlertDialog.Builder(ContextThemeWrapper(context, R.style.NewAlertButtonStyle))
                .setTitle(getString(R.string.dialog_title))
                .setMessage(getString(R.dialog_body))
                .setPositiveButton(R.string.ok) { _, _ ->
                    //doing something here
                }.show()

Несмотря на то, что стиль, кажется, не применяется, цвет текста кнопки не красный. Чего мне не хватает?

1 Ответ

0 голосов
/ 28 апреля 2020

Просто установите R.style.NewAlertButtonStyle в ContextThemeWrapper

...