Android DateTimePicker:一个简约、漂亮的日期时间选择器


DateTimePicker 一个简约、漂亮的日期时间选择器,支持大面积自定义UI,内置日期时间选择弹窗,基于 Google BottomSheetDialog,可直接使用。

查看最新版本及api改动需前往Github

预览



快速体验


点击下载

如何引入

Step 1. 添加 JitPack repository

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

Step 2. 添加 Gradle依赖

dependencies {
    ...
    //为了防止不必要的依赖冲突,0.0.3开始需要自行依赖google material库
    implementation 'com.google.android.material:material:1.1.0'
    //查看最新版本请前往github,仅支持androidx
    implementation 'com.github.loperSeven:DateTimePicker:0.1.0'
}

如何使用

卡片弹窗

最简单的使用方式
  CardDatePickerDialog.builder(this)
                .setTitle("SET MAX DATE")
                .setOnChoose(listener = object :CardDatePickerDialog.OnChooseListener{
                    override fun onChoose(millisecond: Long) {            
                    }
                }).build().show()
所有可配置属性
   CardDatePickerDialog.builder(context)
                .setTitle("CARD DATE PICKER DIALOG")
                .setDisplayType(displayList)
                .setBackGroundModel(model)
                .showBackNow(true)
                .setDefaultTime(defaultDate)
                .setMaxTime(maxDate)
                .setMinTime(minDate)
                .setThemeColor(color)
                .showDateLabel(true)
                .showFocusDateInfo(true)
                .setLabelText("年","月","日","时","分")
                .setOnChoose("选择",object :CardDatePickerDialog.OnChooseListener{
                    override fun onChoose(millisecond: Long) {
                    }
                })
                .setOnCancel("关闭",object :CardDatePickerDialog.OnCancelListener{
                    override fun onCancel() {
                    }
                }).build().show()

可配置属性说明

  • 设置标题
fun setTitle(value: String)
  • 是否显示回到当前按钮
fun showBackNow(b: Boolean)
  • 是否显示选中日期信息
fun showFocusDateInfo(b: Boolean)
  • 显示模式
// 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<Int>)
  • 设置默认时间
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)
  • 绑定选择监听
/**
*示例
*setOnChoose("确定")
*setOnChoose(listener = object :CardDatePickerDialog.OnChooseListener{
                    override fun onChoose(millisecond: Long) {
                    }
                })
*setOnChoose("确定",object :CardDatePickerDialog.OnChooseListener{
                    override fun onChoose(millisecond: Long) {
                    }
                })
*/
fun setOnChoose(text: String = "确定", listener: OnChooseListener?=null)
  • 绑定取消监听
/**
*示例
*setOnCancel("取消")
*setOnCancel(listener = object :CardDatePickerDialog.OnCancelListener{
                  override fun onCancel() {
                    }
                })
*setOnCancel("取消",object :CardDatePickerDialog.OnCancelListener{
                    override fun onCancel() {
                    }
                })
*/
fun setOnCancel(text: String = "取消", listener: OnCancelListener?=null)

日期时间选择控件

xml中
        <com.loper7.date_time_picker.DateTimePicker
            android:id="@+id/dateTimePicker"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:showLabel="true"
            app:textSize="16sp"
            app:themeColor="#FF8080" />
代码中
  • 设置监听
       dateTimePicker.setOnDateTimeChangedListener(object :DateTimePicker.OnDateTimeChangedListener{
            override fun onDateTimeChanged(view: DateTimePicker?, millisecond: Long) {
            }
        })

以上为最简单的使用方式

更多设置
  • 设置显示状态

DateTimePicker支持显示 年月日时分 五个选项的任意组合,显示顺序以此为年、月、日、时、分,setDisplayType中可无序设置。

     dateTimePicker.setDisplayType(intArrayOf(
            DateTimePicker.YEAR,//显示年
            DateTimePicker.MONTH,//显示月
            DateTimePicker.DAY,//显示日
            DateTimePicker.HOUR,//显示时
            DateTimePicker.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")

Github

更多详细属性可前往Github查看,也可以通过isuess提出你的问题,让我们共同优化DateTimePicker。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335