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
相关产品推荐
相关产品推荐

