Android:这是一个让你心动的日期&时间选择组件

您所在的位置:网站首页 安卓滑动设置 Android:这是一个让你心动的日期&时间选择组件

Android:这是一个让你心动的日期&时间选择组件

2023-12-29 01:37| 来源: 网络整理| 查看: 265

预览 引入 添加 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