美文网首页
Android日期+时间选择器

Android日期+时间选择器

作者: 馒头炖土豆 | 来源:发表于2023-07-16 16:12 被阅读0次
参考链接: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()

相关文章

网友评论

      本文标题:Android日期+时间选择器

      本文链接:https://www.haomeiwen.com/subject/jmkwudtx.html