使用深色主题时,MaterialDatePicker 和 TimePickerDialog 的样式不同
MaterialDatePicker and TimePickerDialog are styled differently when using dark theme
我目前使用 MaterialDatePicker,因为 material 团队没有开发相应的 TimePicker,所以我选择使用 TimePickerDialog。
val calendarConstraints = CalendarConstraints.Builder().setOpenAt(datetimeAsUTC)
val datePicker: MaterialDatePicker<Long> = MaterialDatePicker
.Builder
.datePicker()
.setSelection(datetimeAsUTC)
.setCalendarConstraints(calendarConstraints.build())
.setTitleText(label)
.build()
datePicker.show(requireFragmentManager(), datePicker.toString())
val timePicker : TimePickerDialog = TimePickerDialog(requireContext(), { _, hour, minute ->
vm.process(event(hour, minute))
},
datetime.value?.hourOfDay ?: 0,
datetime.value?.minuteOfHour ?: 0,
DateFormat.is24HourFormat(requireContext())
)
timePicker.show()
它们工作得很好,但它们的样式在深色主题下不匹配
这似乎是很多人 运行 都会遇到的问题,所以希望有一个简单的解决方案。
我可以尝试自己更改颜色,但我对此没有太多经验,并考虑
我不是在寻找自定义外观,而是要与其他应用匹配的标准外观,我认为有更好的解决方案。
使用 Material 组件库中的 MaterialTimePicker
:
val materialTimePicker = MaterialTimePicker.Builder()
.setTimeFormat(TimeFormat.CLOCK_24H)
.setHour(22)
.setMinute(10)
.build()
materialTimePicker.show(supportFragmentManager, "fragment_tag")
注意:此代码至少需要版本1.3.0-alpha03
.
我目前使用 MaterialDatePicker,因为 material 团队没有开发相应的 TimePicker,所以我选择使用 TimePickerDialog。
val calendarConstraints = CalendarConstraints.Builder().setOpenAt(datetimeAsUTC)
val datePicker: MaterialDatePicker<Long> = MaterialDatePicker
.Builder
.datePicker()
.setSelection(datetimeAsUTC)
.setCalendarConstraints(calendarConstraints.build())
.setTitleText(label)
.build()
datePicker.show(requireFragmentManager(), datePicker.toString())
val timePicker : TimePickerDialog = TimePickerDialog(requireContext(), { _, hour, minute ->
vm.process(event(hour, minute))
},
datetime.value?.hourOfDay ?: 0,
datetime.value?.minuteOfHour ?: 0,
DateFormat.is24HourFormat(requireContext())
)
timePicker.show()
它们工作得很好,但它们的样式在深色主题下不匹配
这似乎是很多人 运行 都会遇到的问题,所以希望有一个简单的解决方案。 我可以尝试自己更改颜色,但我对此没有太多经验,并考虑 我不是在寻找自定义外观,而是要与其他应用匹配的标准外观,我认为有更好的解决方案。
使用 Material 组件库中的 MaterialTimePicker
:
val materialTimePicker = MaterialTimePicker.Builder()
.setTimeFormat(TimeFormat.CLOCK_24H)
.setHour(22)
.setMinute(10)
.build()
materialTimePicker.show(supportFragmentManager, "fragment_tag")
注意:此代码至少需要版本1.3.0-alpha03
.