Skip to content

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风格。
Clone this wiki locally