参考链接:https://juejin.cn/post/6917909994985750535
可自定义修改的内容总结如下:
1:可以展示或隐藏年月日时分秒的文字
2:修改文字颜色
3:修改字号
4:修改全部标签文字,比如显示成:2023Y 07M 14D 15H 21M 47S
5:可以只展示年月、年月日、年月日时分等
6:可以使用1-6个Numpicker自定义UI,摆放位置自己设置
7:可以设置最大时间、最小时间
8:可以设置分割线颜色
9:可以设置整体文字加粗或者只有选中的文字加粗
修改字体大小、颜色等视觉效果建议在xml中进行
自定义工具类
object DateTimeHelper {
interface OnSelectDateTimeListener
{
fun onSelect(millisecond : Long)
}
class Builder(mDateTimePicker : DateTimePicker) {
private var onSelectDateTimeListener : OnSelectDateTimeListener? = null
private var mDateTimePicker : DateTimePicker? = null
private var array = intArrayOf(-1,-1,-1,-1,-1,-1)
private var yearText = "年"
private var monthText = "月"
private var dayText = "日"
private var hourText = "时"
private var minuteText = "分"
private var secondText = "秒"
private var maxTime = 0L
private var minTime = 0L
init {
this.mDateTimePicker = mDateTimePicker
}
fun showYear(): Builder {
array[0] = DateTimeConfig.YEAR
return this
}
fun showMonth(): Builder {
array[1] = DateTimeConfig.MONTH
return this
}
fun showDay(): Builder {
array[2] = DateTimeConfig.DAY
return this
}
fun showHour(): Builder {
array[3] = DateTimeConfig.HOUR
return this
}
fun showMinute(): Builder {
array[4] = DateTimeConfig.MIN
return this
}
fun showSecond(): Builder {
array[5] = DateTimeConfig.SECOND
return this
}
fun setYearText(yearText : String): Builder {
this.yearText = yearText
return this
}
fun setMonthText(monthText : String): Builder {
this.monthText = monthText
return this
}
fun setDayText(dayText : String): Builder {
this.dayText = dayText
return this
}
fun setHourText(hourText : String): Builder {
this.hourText = hourText
return this
}
fun setMinuteText(minuteText : String): Builder {
this.minuteText = minuteText
return this
}
fun setSecondText(secondText : String): Builder {
this.secondText = secondText
return this
}
//传入时间字符串格式为:yyyy-MM-dd HH:mm:ss
fun setMaxTime(maxTime : String): Builder {
val string2Millis = TimeUtils.string2Millis(maxTime) //这里解析不成功会返回-1
this.maxTime = string2Millis
return this
}
//传入时间字符串格式为:yyyy-MM-dd HH:mm:ss
fun setMinTime(minTime : String): Builder {
val string2Millis = TimeUtils.string2Millis(minTime) //这里解析不成功会返回-1
this.minTime = string2Millis
return this
}
fun setOnDateTimeChangedListener(onSelectDateTimeListener : OnSelectDateTimeListener): Builder {
this.onSelectDateTimeListener = onSelectDateTimeListener
return this
}
fun build(): DateTimePicker? {
mDateTimePicker?.setDisplayType(array)
mDateTimePicker?.setLabelText(yearText,monthText,dayText,hourText, minuteText,secondText)
if (maxTime > 0L)
{
mDateTimePicker?.setMaxMillisecond(maxTime)
}
if (minTime > 0L)
{
mDateTimePicker?.setMinMillisecond(minTime)
}
mDateTimePicker?.setOnDateTimeChangedListener { millisecond ->
onSelectDateTimeListener?.onSelect(millisecond)
}
return mDateTimePicker
}
}
}
工具类用法
DateTimeHelper.Builder(binding.dateTimePicker).
showYear().
showMonth().
showDay().
setYearText("").
setMaxTime("2025-01-01 00:00:00").
setOnDateTimeChangedListener(object : DateTimeHelper.OnSelectDateTimeListener{
override fun onSelect(millisecond: Long) {
selectTime = millisecond
}
}).build()
网友评论