-
Notifications
You must be signed in to change notification settings - Fork 132
CardDatePickerDialog 使用说明
LOPER7 edited this page Mar 29, 2023
·
12 revisions
//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)
.setAssistColor(color)
.setDividerColor(color)
.setChooseDateModel(DateTimeConfig.DATE_LUNAR)
.showDateLabel(true)
.showFocusDateInfo(true)
.setTouchHideable(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 setAssistColor(@ColorInt assistColor: Int)
- 设置分割线颜色
fun setDividerColor(@ColorInt dividerColor: Int)
- 设置dialog选中日期信息展示格式
fun setChooseDateModel(model: Int)//1:DateTimeConfig.DATE_LUNAR 0:DateTimeConfig.DATE_DEFAULT
- 设置显示值
//types:DateTimeConfig.YEAR,DateTimeConfig.MONTH,DateTimeConfig.DAY,DateTimeConfig.HOUR,DateTimeConfig.MIN,DateTimeConfig.SECOND
fun setDisplayType(vararg types: Int)
//types:同上
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)
- 设置是否循环滚动
/**
*示例(默认为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)
- 是否可以滑动关闭弹窗
/**
* 是否可以滑动关闭弹窗
* @param touchHideable 默认为 true
*/
fun setTouchHideable(touchHideable:Boolean = true):Builder{
this.touchHideable = touchHideable
return this
}
- 适配深色模式
//由于背景、DateTimePicker以及主题色均可由开发者灵活配置,为了兼容这些配置,所以适配深色模式需要调用以下几个方法进行设置。
//1.自定义dialog背景,为light/dark模式设置不同的值
builder.setBackGroundModel(if(isDark) R.drawable.shape_bg_dialog_dark else R.drawable.shape_bg_dialog_light)
//2.自定义dialog辅助文字颜色
setAssistColor(if(isDark) darkColor else lightColor)
//3.自定义dialog分割线颜色
setDividerColor(if(isDark) darkColor else lightColor)
//这样深色模式就适配完成了,当然,以上三个方法的作用不仅可以用于适配深色模式,也可以传入更契合app主题的颜色,用于与app统一UI风格。