Android:这是一个让你心动的日期&时间选择组件 |
您所在的位置:网站首页 › 安卓滑动设置 › Android:这是一个让你心动的日期&时间选择组件 |
预览
引入
添加 JitPack repository
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
添加 Gradle依赖
dependencies {
...
implementation 'com.google.android.material:material:1.1.0' //为了防止不必要的依赖冲突,0.0.3开始需要自行依赖google material库
implementation 'com.github.loperSeven:DateTimePicker:0.3.0'//此处不保证最新版本,最新版需前往文末github查看
}
开始使用
内置弹窗CardDatePickerDialog
最简单的使用方式
//kotlin
CardDatePickerDialog.builder(this)
.setTitle("SET MAX DATE")
.setOnChoose {millisecond->
}.build().show()
//java
new CardDatePickerDialog.Builder(this)
.setTitle("SET MAX DATE")
.setOnChoose("确定", aLong -> {
//aLong = millisecond
return null;
}).build().show();
所有可配置属性
CardDatePickerDialog.builder(context)
.setTitle("CARD DATE PICKER DIALOG")
.setDisplayType(displayList)
.setBackGroundModel(model)
.showBackNow(true)
.setPickerLayout(layout)
.setDefaultTime(defaultDate)
.setMaxTime(maxDate)
.setMinTime(minDate)
.setWrapSelectorWheel(false)
.setThemeColor(color)
.showDateLabel(true)
.showFocusDateInfo(true)
.setLabelText("年","月","日","时","分")
.setOnChoose("选择"){millisecond->}
.setOnCancel("关闭") {}
.build().show()
可配置属性说明
设置标题
fun setTitle(value: String)
是否显示回到当前按钮
fun showBackNow(b: Boolean)
是否显示选中日期信息
fun showFocusDateInfo(b: Boolean)
设置自定义选择器
//自定义选择器Layout注意事详见 【定制 DateTimePicker】
fun setPickerLayout(@NotNull layoutResId: Int)
显示模式
// model 分为:CardDatePickerDialog.CARD//卡片,CardDatePickerDialog.CUBE//方形,CardDatePickerDialog.STACK//顶部圆角
// model 允许直接传入drawable资源文件id作为弹窗的背景,如示例内custom
fun setBackGroundModel(model: Int)
设置主题颜色
fun setThemeColor(@ColorInt themeColor: Int)
设置显示值
fun setDisplayType(vararg types: Int)
fun setDisplayType(types: MutableList)
设置默认时间
fun setDefaultTime(millisecond: Long)
设置范围最小值
fun setMinTime(millisecond: Long)
设置范围最大值
fun setMaxTime(millisecond: Long)
是否显示单位标签
fun showDateLabel(b: Boolean)
设置标签文字
/**
*示例
*setLabelText("年","月","日","时","分")
*setLabelText("年","月","日","时")
*setLabelText(month="月",hour="时")
*/
fun setLabelText(year:String=yearLabel,month:String=monthLabel,day:String=dayLabel,hour:String=hourLabel,min:String=minLabel)
设置是否循环滚动
/**
*示例(默认为true)
*setWrapSelectorWheel(false)
*setWrapSelectorWheel(DateTimeConfig.YEAR,DateTimeConfig.MONTH,wrapSelector = false)
*setWrapSelectorWheel(arrayListOf(DateTimeConfig.YEAR,DateTimeConfig.MONTH),false)
*/
fun setWrapSelectorWheel()
绑定选择监听
/**
*示例
*setOnChoose("确定")
*setOnChoose{millisecond->}
*setOnChoose("确定"){millisecond->}
*/
fun setOnChoose(text: String = "确定", listener: ((Long) -> Unit)? = null)
绑定取消监听
/**
*示例
*setOnCancel("取消")
*setOnCancel{}
*setOnCancel("取消"){}
*/
fun setOnCancel(text: String = "取消", listener: (() -> Unit)? = null)
选择器 DateTimePicker
xml中
app:layout 为自定义选择器布局 可参考 定制 DateTimePicker 代码中 设置监听 dateTimePicker.setOnDateTimeChangedListener { millisecond -> } 更多设置 设置自定义选择器布局(注意:需要在dateTimePicker其他方法之前调用,否则其他方法将会失效) dateTimePicker.setLayout(R.layout.layout_date_picker_segmentation)//自定义layout resId 设置显示状态DateTimePicker支持显示 年月日时分 五个选项的任意组合,显示顺序以此为年、月、日、时、分,setDisplayType中可无序设置。 dateTimePicker.setDisplayType(intArrayOf( DateTimeConfig.YEAR,//显示年 DateTimeConfig.MONTH,//显示月 DateTimeConfig.DAY,//显示日 DateTimeConfig.HOUR,//显示时 DateTimeConfig.MIN))//显示分 设置默认选中时间 dateTimePicker.setDefaultMillisecond(defaultMillisecond)//defaultMillisecond 为毫秒时间戳 设置允许选择的最小时间 dateTimePicker.setMinMillisecond(minMillisecond) 设置允许选择的最大时间 dateTimePicker.setMaxMillisecond(maxMillisecond) 是否显示label标签(选中栏 年月日时分汉字) dateTimePicker.showLabel(true) 设置主题颜色 dateTimePicker.setThemeColor(ContextCompat.getColor(context,R.color.colorPrimary)) 设置字体大小设置的字体大小为选中栏的字体大小,预览字体会根据字体大小等比缩放 dateTimePicker.setTextSize(15)//单位为sp 设置标签文字 //全部 dateTimePicker.setLabelText(" Y"," M"," D"," Hr"," Min") //指定 dateTimePicker.setLabelText(min = "M") 定制 DateTimePicker 说明DateTimePicker 主要由至多6个 NumberPicker 组成,所以在自定义布局时,根据自己所需的样式摆放 NumberPicker 即可。以下为注意事项 开始定制 DateTimePicker 至多支持6个 NumberPicker ,你可以在xml中按需摆放1-6个 NumberPicker 为了让 DateTimePicker 找到 NumberPicker ,需要在xml中为 NumberPicker 指定 id 或 tag,规则如下 /** * year:np_datetime_year * month:np_datetime_month * day:np_datetime_day * hour:np_datetime_hour * minute:np_datetime_minute * second:np_datetime_second */ android:id="@+id/np_datetime_year" or android:tag="np_datetime_year" 使用定制UI 在 CardDatePickerDialog 中使用 fun setPickerLayout(@NotNull layoutResId: Int)在 DateTimePicker 中使用 或者 dateTimePicker.setLayout(R.layout.layout_date_picker_segmentation)//自定义layout resId XML示例 segmentation pyramid grid 示例图片 更高的拓展性如果以上自定义并不能满足你的需求,你还可以定制你自己的 DateTimePicker , 可参照 DateTimePicker.kt 定义你想要属性以及在代码内编写你的UI逻辑。选择器的各种逻辑约束抽离在 DateTimeController.kt ,你的 DateTimePicker 只需让 DateTimeController.kt 绑定 NumberPicker 即可。比如: DateTimeController().bindPicker(YEAR, mYearSpinner) .bindPicker(MONTH, mMonthSpinner) .bindPicker(DAY, mDaySpinner).bindPicker(HOUR, mHourSpinner) .bindPicker(MIN, mMinuteSpinner).bindPicker(SECOND, mSecondSpinner).build() 最后 关于 Date&Time Picker他是去年疫情肆虐的时候诞生的,从编写他的第一行代码开始到现在已经快过了一年,到目前为止更新了10+次版本,每一次的更新的都使他更加稳定与完善。 在此代表他,向给他star和issue的小伙伴们致以诚挚的感谢,每一个star和issue都是他成长动力和足迹。 看到这里的你,可以移驾 Github 为他点亮右上角的star吗? 推荐助你调教官方 Tablayout - Tablayout 拓展 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |