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

Android中如何实现Spinner样式的日期选择器?

实现滚轮(Spinner)样式的DatePickerDialog

要把默认的日历样式日期选择器改成滚轮样式,你可以通过指定自定义主题的方式实现,具体操作如下:

1. 定义滚轮样式的主题

在res/values/styles.xml中添加自定义主题,指定滚轮样式的DatePicker控件:

<style name="SpinnerDatePickerDialogTheme" parent="android:Theme.Holo.Light.Dialog">
    <item name="android:datePickerStyle">@android:style/Widget.Holo.Light.DatePicker</item>
</style>

这个主题基于Holo浅色对话框主题,强制使用滚轮样式的日期选择器控件。

2. 修改Kotlin代码应用该主题

在创建DatePickerDialog时,传入刚才定义的主题ID,替换原有的构造方法:

fun showDatePicker() {
    val formatDate = SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())
    val getDate = Calendar.getInstance()
    
    // 传入自定义主题,创建滚轮样式的日期选择器
    val datePicker = DatePickerDialog(
        requireContext(),
        R.style.SpinnerDatePickerDialogTheme,
        DatePickerDialog.OnDateSetListener { _, year, month, dayOfMonth ->
            val selectedDate = Calendar.getInstance().apply {
                set(Calendar.YEAR, year)
                set(Calendar.MONTH, month)
                set(Calendar.DAY_OF_MONTH, dayOfMonth)
            }
            dob.text = formatDate.format(selectedDate.time)
        },
        getDate.get(Calendar.YEAR),
        getDate.get(Calendar.MONTH),
        getDate.get(Calendar.DAY_OF_MONTH)
    )
    
    datePicker.show()
}

补充说明

  • 如果项目使用AppCompat库,可将主题父类改为Theme.AppCompat.Light.Dialog,搭配Widget.AppCompat.DatePicker样式,适配更多设备版本。
  • 部分低版本系统可通过datePicker.setCalendarViewShown(false)隐藏日历视图,但高版本系统中该方法可能失效,使用主题的方式更稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 07:02:07