Я использую стиль ниже, чтобы изменить цвет фона диалогового окна на темный. На странице настроек я использую ListPreference, и после применения этого стиля кнопка cancel ListPreference исчезла в фоне диалогового окна.
<style name = "AppThemeBase" parent = "Theme.MaterialComponents.DayNight">
<item name = "colorPrimary">#212D3B</item>
<item name = "colorPrimaryDark">#172331</item>
<item name = "colorAccent">#61A3D7</item>
<item name = "android:textColorPrimary">#FFFFFF</item>
<item name = "android:dialogTheme">@style/AppTheme.Dialog</item>
<item name = "android:alertDialogTheme">@style/AppTheme.Dialog</item>
</style>
<style name = "AppTheme.Dialog" parent = "Theme.MaterialComponents.DayNight.Dialog">
<item name = "android:windowBackground">@android:color/transparent</item>
<item name = "android:background">#212D3B</item>
<item name = "colorPrimary">#61A3D7</item>
<item name = "colorPrimaryDark">#8DB2D3</item>
<item name = "colorAccent">#61A3D7</item>
</style>
Есть ли способ изменить цвет этой кнопки?
Наконец я нашел решение. Я не понимаю, в чем разница между android:alertDialogTheme и alertDialogTheme (без android:), но экран предпочтений использовал alertDialogTheme для стилизации диалогов.
Добавив нижеследующий элемент в AppThemeBase, моя проблема решена.
<item name = "alertDialogTheme">@style/AppTheme.Dialog</item>
Финал AppThemeBase:
<style name = "AppThemeBase" parent = "Theme.MaterialComponents.DayNight">
<item name = "colorPrimary">#212D3B</item>
<item name = "colorPrimaryDark">#172331</item>
<item name = "colorAccent">#61A3D7</item>
<item name = "android:textColorPrimary">#FFFFFF</item>
<item name = "android:dialogTheme">@style/AppTheme.Dialog</item>
<item name = "android:alertDialogTheme">@style/AppTheme.Dialog</item>
<item name = "alertDialogTheme">@style/AppTheme.Dialog</item>
</style>
<style name = "AppTheme.Dialog" parent = "Theme.MaterialComponents.DayNight.Dialog">
<item name = "android:windowBackground">@android:color/transparent</item>
<item name = "android:background">#212D3B</item>
<item name = "colorPrimary">#61A3D7</item>
<item name = "colorPrimaryDark">#8DB2D3</item>
<item name = "colorAccent">#61A3D7</item>
</style>