You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI中TimePicker如何切换为Spinner模式

.NET MAUI 中 TimePicker 控件切换为 Spinner 模式问题

我希望在.NET MAUI中将TimePicker控件设置为Spinner模式,但目前应用里该控件显示的是时钟模式(当前显示样式参考:时钟模式的TimePicker)。我尝试过一个Stack Overflow上的解决方案,但没有效果,我认为那不是正确的解决办法。

正确实现方案(针对Android平台)

.NET MAUI的TimePicker在Android端默认采用Material风格的时钟选择器,要切换为Spinner模式,可通过以下两种方式实现:

方式一:自定义Handler(单控件/全局生效)

  1. 在Android平台项目中创建CustomTimePickerHandler.cs文件,代码如下:
using Android.Widget;
using Microsoft.Maui.Handlers;
using Microsoft.Maui.Controls.Compatibility.Platform.Android;

namespace 你的应用命名空间.Platforms.Android;

public class CustomTimePickerHandler : TimePickerHandler
{
    protected override void ConnectHandler(TimePickerNativeView platformView)
    {
        base.ConnectHandler(platformView);
        
        // 强制切换为Spinner模式
        if (platformView is AndroidX.AppCompat.Widget.TimePickerCompat timePicker)
        {
            TimePickerCompat.SetTimePickerMode(timePicker, TimePickerMode.Spinner);
        }
    }
}
  1. 在MauiProgram.cs中注册该Handler:
using 你的应用命名空间.Platforms.Android;

builder.ConfigureMauiHandlers(handlers =>
{
#if ANDROID
    handlers.AddHandler(typeof(Microsoft.Maui.Controls.TimePicker), typeof(CustomTimePickerHandler));
#endif
});

方式二:修改Android主题(全局生效)

在Android项目的Resources/values/styles.xml中,修改应用主题,添加全局TimePicker样式配置:

<style name="MainTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <!-- 全局设置所有TimePicker为Spinner模式 -->
    <item name="android:timePickerStyle">@style/Widget.MaterialComponents.TimePicker.Spinner</item>
</style>

注意:两种方式都要求Android项目的目标API级别不低于21(Spinner模式最低支持API21)。

内容的提问来源于stack exchange,提问作者solarispirozi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:32:44