我创建了一个 .Net MAUI 应用程序,它具有本机 Android DatePicker。在 Platforms/Android/Resources 目录中,我有两个文件夹,分别是 Android DatePicker 在浅色模式和深色模式下的 styles.xml 的 value 和 value-night,除了它们设置的颜色之外,它们非常相似。然而,当我在values-night中包含styles.xml时,它似乎覆盖了Maui.SplashTheme的其他样式,导致当Android设备设置为黑暗模式。这是我目前拥有的代码:
值/styles.xml
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<style name="Maui.MainTheme" parent="Theme.MaterialComponents.DayNight">
<item name="android:datePickerDialogTheme">@style/CustomDatePickerDialog</item>
</style>
<style name="CustomDatePickerDialog" parent="Theme.AppCompat.Light">
<item name="android:windowIsFloating">true</item>
<item name="colorAccent">#ff0000</item>
<item name="android:colorBackground">#0000ff</item>
</style>
</resources>
values-night/styles.xml
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<style name="Maui.MainTheme" parent="Theme.MaterialComponents.DayNight">
<item name="android:datePickerDialogTheme">@style/CustomDatePickerDialog</item>
</style>
<style name="CustomDatePickerDialog" parent="Theme.AppCompat.Light">
<item name="android:windowIsFloating">true</item>
<item name="colorAccent">#000000</item>
<item name="android:colorBackground">#00ffff</item>
</style>
</resources>
并将其包含在我的 MainActivity 中,如下所示
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize)]
DatePicker 在 .xaml 页面上创建(例如):
<DatePicker MinimumDate="01/01/2022"
MaximumDate="12/31/2022"
Date="06/21/2022" />
我已经实现了诸如这篇文章中提供的解决方案,但似乎没有一个解决方案可以修复暗模式下不需要的更改。任何建议将不胜感激。
您需要将 [Activity] 中的 Maui.SplashTheme 更改为 Maui.MainTheme
[Activity(Theme = "@style/Maui.MainTheme", MainLauncher = true, LaunchMode = LaunchMode.SingleTop, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
并且请确保 values-night/styles.xml 和 values/styles.xml 的 buildaction 是 Android 资源。
我测试了它,它在我这边工作。