天天看點

Android DateTimePicker:一個簡約、漂亮的日期時間選擇器

Android DateTimePicker:一個簡約、漂亮的日期時間選擇器

DateTimePicker 一個簡約、漂亮的日期時間選擇器,支援大面積自定義UI,内置日期時間選擇彈窗,基于 Google BottomSheetDialog,可直接使用。

預覽

Android DateTimePicker:一個簡約、漂亮的日期時間選擇器
Android DateTimePicker:一個簡約、漂亮的日期時間選擇器
Android DateTimePicker:一個簡約、漂亮的日期時間選擇器
Android DateTimePicker:一個簡約、漂亮的日期時間選擇器
Android DateTimePicker:一個簡約、漂亮的日期時間選擇器

快速體驗

點選下載下傳

如何引入

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()
           

可配置屬性說明

  • 設定标題
  • 是否顯示回到目前按鈕
  • 是否顯示選中日期資訊
  • 顯示模式
// model 分為:CardDatePickerDialog.CARD//卡片,CardDatePickerDialog.CUBE//方形,CardDatePickerDialog.STACK//頂部圓角
// model 允許直接傳入drawable資源檔案id作為彈窗的背景,如示例内custom
fun setBackGroundModel(model: Int)
           
  • 設定主題顔色
  • 設定顯示值
  • 設定預設時間
  • 設定範圍最小值
  • 設定範圍最大值
  • 是否顯示機關标簽
  • 設定标簽文字
/**
*示例
*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))//顯示分
           
  • 設定預設選中時間
  • 設定允許選擇的最小時間
  • 設定允許選擇的最大時間
  • 是否顯示label标簽(選中欄 年月日時分漢字)
  • 設定主題顔色
  • 設定字型大小
設定的字型大小為選中欄的字型大小,預覽字型會根據字型大小等比縮放
  • 設定标簽文字
//全部
  dateTimePicker.setLabelText(" Y"," M"," D"," Hr"," Min")
  //指定
  dateTimePicker.setLabelText(min = "M")
           

Github

更多詳細屬性可前往Github檢視,也可以通過isuess提出你的問題,讓我們共同優化DateTimePicker。