【发布时间】:2022-09-27 14:45:53
【问题描述】:
概括
我想使用微调器Xamarin.Forms 中 Android DatePicker 的模式。这可以在styles.xlm 中设置,但这样做总是会导致日期选择器显示为暗而不是亮。如何将日期选择器指定为微调器以及使用默认的浅色/深色背景。
如果重要的话,我使用的是 Xamarin.Forms 版本 5.0.0.2515(撰写本文时的最新版本)。
细节
默认情况下,Xamarin.Forms 为日期选择器使用日历样式弹出窗口:
这个选择器似乎也尊重 Android 设置中设置的明暗主题:
我想使用微调器样式而不是日历样式。这可以通过以下 styles.xml 来完成:
<?xml version=\"1.0\" encoding=\"utf-8\" ?>
<resources>
<style name=\"MainTheme\" parent=\"MainTheme.Base\">
<item name=\"android:datePickerDialogTheme\">@style/Theme.picker</item>
</style>
<style name=\"Theme.picker\" parent=\"android:Theme.Material.Dialog\">
<item name=\"android:datePickerStyle\">@style/MyDatePicker</item>
</style>
<style name=\"MyDatePicker\" parent=\"android:Widget.Material.DatePicker\">
<item name=\"android:datePickerMode\">spinner</item>
</style>
</resources>
但是,这样做会导致微调器弹出窗口始终以深色背景显示,无论 Android 手机处于浅色还是深色模式,如下图所示:
我想这是因为我使用的父样式正在控制颜色(parent=\"android:Theme.Material.Dialog\" 和parent=\"android:Widget.Material.DatePicker\"),但是如果我删除样式上的parent 分配,我会收到以下错误:
resource style/Theme (aka com.xxxxx.android:style/Theme) not found. xxxxx.Android
我也直接尝试在主样式中设置 android.datePickerMode ,如下所示:
<?xml version=\"1.0\" encoding=\"utf-8\" ?>
<resources>
<style name=\"MainTheme\" parent=\"MainTheme.Base\">
<item name=\"android:datePickerMode\">spinner</item>
</style>
</resources>
不幸的是,这似乎使微调器仍然以日历模式显示,而不是作为微调器(尽管样式工作正常)。
有没有办法像日历视图一样实现尊重明/暗模式的微调器?
编辑
我用过Xamarin.Forms渲染器修改标准控件的外观,但我只知道如何通过渲染器修改 Date 对象(看起来像一个文本框)。我不知道是否有一种方法可以修改在点击 Date 对象时显示为弹出窗口的选择器。
标签: android xamarin android-styles