Android通过样式从应用程序设置更改对话框背景颜色



我想更改PreferenceActivity的默认对话框背景颜色(打开对话框时,我们从设置中的列表中选择选项(。现在对话框的背景总是白色的,尽管我改变了它的风格。我正试图像在我的代码中那样解决这个问题,但它不起作用。这是我的浅色和深色款式。

styles.xml

<style name="Theme_ObjectMeasure_Light" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="android:textColor">#000000</item>
<item name="android:textColorPrimary">#000000</item>
<item name="android:textColorSecondary">@color/textColorSecondary</item>
<item name="alertDialogTheme">@style/DialogThemeLight</item>
<item name="dialogTheme">@style/DialogThemeLight</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowBackground">@color/bottom_nav_view_bg_night</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<item name="actionBarTheme">@style/Theme.MaterialComponents.DayNight</item>
<item name="android:actionBarStyle">@style/ThemeActionBar</item>
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/ThemeActionBar</item>
<item name="windowActionBarOverlay">true</item>
</style>
<style name="Theme_ObjectMeasure_Dark" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="android:textColor">#ffffff</item>
<item name="android:textColorPrimary">#ffffff</item>
<item name="android:textColorSecondary">@color/textColorSecondary</item>
<item name="alertDialogTheme">@style/DialogThemeDark</item>
<item name="dialogTheme">@style/DialogThemeDark</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowBackground">@color/bottom_nav_view_bg_night</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<item name="actionBarTheme">@style/Theme.MaterialComponents.DayNight</item>
<item name="android:actionBarStyle">@style/ThemeActionBar</item>
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/ThemeActionBar</item>
<item name="windowActionBarOverlay">true</item>
</style>
<style name="DialogThemeLight" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@color/bg_light</item>
</style>
<style name="DialogThemeDark" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@color/bg_dark</item>
</style>

colors.xml

<resources>
(...)
<color name="bg_light">#E0E0E0</color>
<color name="bg_dark">#424242</color>
</resources>

我读到,在较新的设备上,应该使用带有android:前缀的属性,或者使用AppCompat主题作为父级,以避免与此前缀混淆。

最新更新