摘要
我想在Xamarin.Forms中为Android DatePicker使用 * spinner * 模式。这可以在styles.xlm中设置,但这样做总是会导致日期选择器显示为暗而不是亮。我如何既将日期选择器指定为spinner,又使用默认的亮/暗背景呢?
如果有必要的话,我使用的是Xamarin.Forms版本5.0.0.2515(撰写本文时的最新版本)。
详细信息
默认情况下,Xamarin.Forms为日期选择器使用日历样式的弹出窗口:
这个选择器似乎也尊重Android设置中设置的亮/暗主题:
我想使用 * spinner * 样式而不是日历样式。这可以通过下面的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>
不幸的是,这似乎使旋转器仍然显示在日历模式,而不是作为一个旋转器(虽然造型工作正常)。
有没有办法实现一个像日历视图一样尊重亮/暗模式的微调器?换句话说,当应用程序处于暗模式时,它显示为暗,而当应用程序处于亮模式时,它显示为亮?
此外,如果它可以在代码中完成,而不是通过styles.xml,那也是可以的。
编辑
我已经使用Xamarin.FormsRenderer修改了标准控件的外观,但是我只知道如何通过渲染器修改Date对象(看起来像一个文本框)。我不知道是否有一种方法可以修改点击Date对象时弹出的选择器。
1条答案
按热度按时间kx1ctssn1#
我已经测试了你提供的代码。是的,这可以改变日期选择器表单。然后你可以添加项目来改变背景颜色和文本颜色。
但我认为这种形式的日期选择器可能不支持黑暗的主题。