loper7/DateTimePicker

无法设置默认时间

jiangdongguo opened this issue · 5 comments

如果是自己获取默认时间戳,显示的默认时间是错的。
比如:

val calendar = Calendar.getInstance().apply {
            add(Calendar.MONTH, -2)
}

calendar.timeInMillis

当设置了最大时间时,默认时间却不是当前时间前2个月的时间。不设置最大时间,显示就是正常的。

如果是自己获取默认时间戳,显示的默认时间是错的。
比如:

val calendar = Calendar.getInstance().apply {
            add(Calendar.MONTH, -2)
}

calendar.timeInMillis

当设置了最大时间时,默认时间却不是当前时间前2个月的时间。不设置最大时间,显示就是正常的。

需要检查一下默认时间是否与最大时间或最小时间的设定冲突了
详见更新日志->0.1.1->修复范围最大值,范围最小值,选中默认值之间冲突时约束异常问题(规则为:最大范围值与最小范围值存在冲突时,后设置的值不会生效;选中默认值与范围最大值/范围最小值存在冲突时,不会生效)

如果是自己获取默认时间戳,显示的默认时间是错的。
比如:

val calendar = Calendar.getInstance().apply {
            add(Calendar.MONTH, -2)
}

calendar.timeInMillis

当设置了最大时间时,默认时间却不是当前时间前2个月的时间。不设置最大时间,显示就是正常的。

需要检查一下默认时间是否与最大时间或最小时间的设定冲突了
详见更新日志->0.1.1->修复范围最大值,范围最小值,选中默认值之间冲突时约束异常问题(规则为:最大范围值与最小范围值存在冲突时,后设置的值不会生效;选中默认值与范围最大值/范围最小值存在冲突时,不会生效)

麻烦试下这段代码:

       CardDatePickerDialog.builder(this)
                .setTitle("123")
                .setDisplayType(arrayListOf(
                    DateTimeConfig.YEAR, DateTimeConfig.MONTH, DateTimeConfig.DAY
                ))
                .setBackGroundModel(CardDatePickerDialog.STACK)
                .showBackNow(false)
                .setDefaultTime(Calendar.getInstance().apply {
                    add(Calendar.MONTH, -2)
                    }.timeInMillis)
                .setMaxTime(Calendar.getInstance().timeInMillis)
                .setMinTime(Calendar.getInstance().apply {
                        add(Calendar.MONTH, -10)
                    }.timeInMillis)
                .setWrapSelectorWheel(false)
                .setThemeColor(Color.parseColor("#FF8000"))
                .showFocusDateInfo(true)
                .setOnChoose("选择") {
                    tvChooseDate.text = "${StringUtils.conversionTime(it, "yyyy-MM-dd HH:mm:ss")}    ${StringUtils.getWeek(it)}"
                }
                .setOnCancel("关闭") {
                }.build().show()

如果是自己获取默认时间戳,显示的默认时间是错的。
比如:

val calendar = Calendar.getInstance().apply {
            add(Calendar.MONTH, -2)
}

calendar.timeInMillis

当设置了最大时间时,默认时间却不是当前时间前2个月的时间。不设置最大时间,显示就是正常的。

需要检查一下默认时间是否与最大时间或最小时间的设定冲突了
详见更新日志->0.1.1->修复范围最大值,范围最小值,选中默认值之间冲突时约束异常问题(规则为:最大范围值与最小范围值存在冲突时,后设置的值不会生效;选中默认值与范围最大值/范围最小值存在冲突时,不会生效)

麻烦试下这段代码:

       CardDatePickerDialog.builder(this)
                .setTitle("123")
                .setDisplayType(arrayListOf(
                    DateTimeConfig.YEAR, DateTimeConfig.MONTH, DateTimeConfig.DAY
                ))
                .setBackGroundModel(CardDatePickerDialog.STACK)
                .showBackNow(false)
                .setDefaultTime(Calendar.getInstance().apply {
                    add(Calendar.MONTH, -2)
                    }.timeInMillis)
                .setMaxTime(Calendar.getInstance().timeInMillis)
                .setMinTime(Calendar.getInstance().apply {
                        add(Calendar.MONTH, -10)
                    }.timeInMillis)
                .setWrapSelectorWheel(false)
                .setThemeColor(Color.parseColor("#FF8000"))
                .showFocusDateInfo(true)
                .setOnChoose("选择") {
                    tvChooseDate.text = "${StringUtils.conversionTime(it, "yyyy-MM-dd HH:mm:ss")}    ${StringUtils.getWeek(it)}"
                }
                .setOnCancel("关闭") {
                }.build().show()

找到问题了,在为numberpicker设置选择约束的时候设置了最大选择值,在特定情况下,选中值会大于设置的最大值,然后就重置为最大值了,这个逻辑有点问题。
我处理了一下,待会儿push上来,有时间的话可以帮忙验证一下~

好的,优秀!

已更新 0.3.0