loper7 / datetimepicker Goto Github PK
View Code? Open in Web Editor NEW⭐🎉一个高颜值日期时间选择器;极简API,内置弹窗,支持农历日期显示,适配深色模式,可动态配置样式及主题,选择器支持完全自定义UI。
⭐🎉一个高颜值日期时间选择器;极简API,内置弹窗,支持农历日期显示,适配深色模式,可动态配置样式及主题,选择器支持完全自定义UI。
设备:Pixel4
系统版本:Android12
场景:Demo中的CardDatePickerDialog
Max Value: 2022-01-06 15:47:47
Min Value: 1990-09-10 15:48:01
Def Value: 2000-12-22 15:48:10
点击Show Dialog
默认时间将显示在2000年1月1日15时0分10秒
经过观察发现只要Def value的Month或者Day > Max Value的Month或者Day,显示便会出错
大神,我在使用CardDatePickerDialog 的时候遇到一个问题,Build时,提示我找不到kotlin.jvm.functions.Function1的类文件,我检查了配置应该没问题,我不知道是哪里导致的这个错误,还请大神指点一下,具体问题如下,感谢🙏
错误: 无法访问Function1
.setOnChoose("确定", aLong -> {
^
找不到kotlin.jvm.functions.Function1的类文件
new CardDatePickerDialog.Builder(this)
.setTitle("SET MAX DATE")
.setOnChoose("确定", aLong -> {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyMMddHHmmss", Locale.getDefault());
String time = simpleDateFormat.format(aLong);
//aLong = millisecond
}).build().show();
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.2.1'
implementation 'org.jetbrains:annotations-java5:15.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.orhanobut:logger:2.2.0'
implementation 'pub.devrel:easypermissions:2.0.0'
implementation 'com.githang:status-bar-compat:0.7'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation 'com.github.loperSeven:DateTimePicker:0.3.3'//具体版本请看顶部jitpack标识,如0.3.4,仅支持androidx
api project(path: ':wiseKit')
}
configurations {
cleanedAnnotations
compile.exclude group: 'org.jetbrains' , module:'annotations'
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
你好,可以指导一下,如果不想循环滚动,在那里入手进行修改吗
使用的是 com.google.android.material:material:1.3.0
demo就能复现问题
希望支持日期格式国际化,月份什么的
setMinMillisecond(TimeUtils.string2Millis("1901 01 01 01:01:01", "yyyy MM dd HH:mm:ss")) //设置最小时间
当我设置1900年,最小时间是1800,但是当我设置2000年,最小时间却又是正确的。
在 DateTimeConfig单例中,DateFormatSybols传入的应该是Locale.getDefault()而不是Locale.US吧?不然所有都是英文的月份了
取消按钮和确认按钮的位置没法改变吗
很好用的库,感谢!提一个小需求:
能否自定义时间间隔?比如以10分钟为单位去选择时间,分钟的滚轮则显示:00/10/20/30/40/50
/**DateTimeController
* 日期发生变化
*/
private fun onDateTimeChanged() {
syncDateData()
Log.d("DateTimePicker","$mYear-$mMonth-$mDay $mHour:$mMinute:$mSecond")
millisecond = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
LocalDateTime.of(mYear, mMonth, mDay, mHour, mMinute, mSecond)
.toInstant(ZoneOffset.ofHours(8)).toEpochMilli()
} else {
val mCalendar = Calendar.getInstance()
mCalendar.set(mYear, mMonth-1, mDay, mHour, mMinute, mSecond)
mCalendar.timeInMillis
}
if (mOnDateTimeChangedListener != null) {
mOnDateTimeChangedListener?.invoke(millisecond)
}
}
millisecond = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
LocalDateTime.of(mYear, mMonth, mDay, mHour, mMinute, mSecond)
.toInstant(ZoneOffset.ofHours(8)).toEpochMilli()
} 为什么有这一段
有些设备上选择日期,年月日之间会显示一条竖线,有些就在月和日之间显示竖线,有些没有显示,这是为什么呢?有什么办法可以隐藏竖线吗?
我是java的0.3.0在setOnChoose时没有找到CardDatePickerDialog.OnChooseListener()
然后您给的例子里面是这些 我看不懂
/**
*示例
*setOnChoose("确定")
*setOnChoose{millisecond->}
*setOnChoose("确定"){millisecond->}
*/
fun setOnChoose(text: String = "确定", listener: ((Long) -> Unit)? = null)
所以一直无法setOnChoose,
.setOnChoose("选择",)
这里第二个参数用java是怎么写的?
感谢
感觉文字大小会统一被DateTimePicker管理,但是默认的效果,textSize会自动比selectedTextSize小一点,我想自定义这个效果,但是发现没法通过xml设置实现
试了下并不显示最下面的按钮文字,比如我的是取消确定2个按钮,运行了下demo发现也存在这样的问题
如果是自己获取默认时间戳,显示的默认时间是错的。
比如:
val calendar = Calendar.getInstance().apply {
add(Calendar.MONTH, -2)
}
calendar.timeInMillis
当设置了最大时间时,默认时间却不是当前时间前2个月的时间。不设置最大时间,显示就是正常的。
不能显示圆角
CardDatePickerDialog.builder(activity)
.setMaxTime(System.currentTimeMillis())
.showBackNow(false)
.setDisplayType(
mutableListOf(
DateTimeConfig.YEAR,
DateTimeConfig.MONTH
)
)
.setThemeColor(Color.parseColor("#03A9F4"))
.setLabelText(year = "年", month = "月")
.setOnChoose { millisecond ->
mAnalyzeViewModel.queryDateLiveData.value = millisecond
}
.build()
.show()
弹窗关闭后,使用leakCanary检测到内存泄漏
rt,谢谢
/**
* `setDefaultTime` 显示错误
* 正确的应该为12:30:00, 但是默认显示的是12:50:00
*
* 复现条件:
* 1. setDefaultTime 和 setMinTime 同时大于当前时间
* 2. setDefaultTime - setMinTime 小于一小时
*/
CardDatePickerDialog.builder(this)
.setTitle("Error Time")
.setDisplayType(DateTimeConfig.HOUR, DateTimeConfig.MIN, DateTimeConfig.SECOND)
.setBackGroundModel(CardDatePickerDialog.CARD)
.showBackNow(false)
.setWrapSelectorWheel(false)
.showFocusDateInfo(false)
// 1640925000000 = UTC+8 2021-12-31 12:30:00.000
.setDefaultTime(1640925000000)
// 1640922000000 = UTC+8 2021-12-31 11:20:00.000
.setMinTime(1640922000000)
.build().show()
大兄弟 快修复 在线等急
README演示图的那种滚动动画干净利落很喜欢,并且字体是加粗
大佬,我现在有个需求。只显示10月1日到3月31日。其他的月份不要,每年都是这样。这个应该改哪块呢
我引用的时候就可以不提示你的工具类。
要是可以直接隐藏时分秒就好了
能否加这个 月日(周)-时-分
格式
在月日(周)
这里今天显示今天,明天显示明天,其余按标准格式显示
铁汁,设置默认时间也有BUG呀
需要多语言
在三星手机上选择时间,月份总是小一月,在华为手机上测试,月份显示正常
感谢作者!
希望老大可以增加自定义数据源的拓展,不局限于选择时间~
在dt_number_picker_material.xml文件中去除了android:hint="@null"标签后便修复了,希望有时间修复一下,感谢分享组件!😊
设置时间选择只选择年份和月份,然后最大值为当前时间戳2021.01.09...,
然后滑动滚轮至2020.12,然后再滑动滚轮到2021年(月份不选择,显示的默认为1月),
然后点击确定后,回调时间为2021年12月
代码:
val displayList = mutableListOf()
displayList.add(DateTimeConfig.YEAR)
displayList.add(DateTimeConfig.MONTH)
val model = CardDatePickerDialog.STACK
val maxDate = TimeUtils.getNowMills()
CardDatePickerDialog.builder(this)
.setTitle("日期选择")
.setDisplayType(displayList)
.setBackGroundModel(model)
.showBackNow(false)
.setMaxTime(maxDate)
.setWrapSelectorWheel(false)
.setThemeColor(Color.parseColor("#4169E1"))
.showDateLabel(true)
.showFocusDateInfo(false)
.setOnChoose("选择") {
tvTimeSelect.text = StringUtils.conversionTime(it, "yyyy-MM")
}
.setOnCancel("关闭") {
}.build().show()
DateTimeController 把wrapSelectorWheel设为false 滚轮上方还是有最大值
DateTimePicker.setLabelText(),min没有进行设置
使用的版本是:implementation 'com.github.loperSeven:DateTimePicker:0.4.1'
在AS里面的鼠标放到接口上都没有API接口注释,点进源码也是没有注释,建议发布版本时把接口注释加上。
Hello,
這插件不錯,簡潔易懂
有一些建議,希望能實現
謝謝
感谢作者开源的库,非常好用和自定义,但是遇到一个问题,可以修改滚动的样式跟Android自带的NumberPicker一样的滚动样式吗?上下一起滚动
比如只提供年月日选择的时候,有效滑动区域只集中在中间一小部分,一不小心就会触发周围的BottomSheetDialog滑动,用户体验不太好,因此建议可以直接在build的时候配置是否禁用滑动关闭功能。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.