跳转到内容

DatePicker ​

DatePicker 是 COUI 中的基础交互组件,通过三列垂直滚轮(年 / 月 / 日)选择日期,对应 ColorOS 的 COUIDatePicker。日列范围会随所选年月自动联动(含闰年),切换到天数更少的月份时日值会自动收敛。所有列均支持无限循环滚动。

日期由纯数据类 DateValue 表示,不依赖任何日期时间库。

引入 ​

kotlin
import io.github.suqi8.coui.kmp.basic.DatePicker
import io.github.suqi8.coui.kmp.basic.DatePickerDefaults
import io.github.suqi8.coui.kmp.basic.DateValue
import io.github.suqi8.coui.kmp.basic.NumberPickerDefaults

基本用法 ​

kotlin
var date by remember { mutableStateOf(DateValue(year = 2026, month = 7, day = 26)) }

DatePicker(
    value = date,
    onValueChange = { date = it }
)

组件状态 ​

禁用状态 ​

kotlin
DatePicker(
    value = date,
    onValueChange = { date = it },
    enabled = false
)

属性 ​

DatePicker 属性 ​

属性名类型说明默认值是否必须
valueDateValue当前选中的日期,超出范围的字段会被修正-是
onValueChange(DateValue) -> Unit选中日期变化时的回调函数-是
modifierModifier应用于选择器的修饰符Modifier否
enabledBoolean是否启用用户交互true否
yearRangeIntRange可选择的年份范围DatePickerDefaults.YearRange否
yearLabel(Int) -> String年份的显示文本转换函数DatePickerDefaults.YearLabel否
monthLabel(Int) -> String月份(1..12)的显示文本转换函数DatePickerDefaults.MonthLabel否
dayLabel(Int) -> String日的显示文本转换函数DatePickerDefaults.DayLabel否
yearColumnWidthDp年份列宽度DatePickerDefaults.YearColumnWidth否
monthColumnWidthDp月份列宽度DatePickerDefaults.MonthColumnWidth否
dayColumnWidthDp日列宽度DatePickerDefaults.DayColumnWidth否
colorsNumberPickerColors滚轮的颜色配置NumberPickerDefaults.colors()否
textStyleTextStyle滚轮项目的文本样式COUITheme.textStyles.title3否
itemHeightDp每个滚轮项目的高度NumberPickerDefaults.ItemHeight否
insideMarginPaddingValues滚轮列周围的内边距DatePickerDefaults.InsideMargin否

DateValue 类 ​

属性名类型说明
yearInt年份(如 2026)
monthInt月份,从 1 开始(1 = 一月)
dayInt日,从 1 开始

DatePickerDefaults 对象 ​

属性名类型说明默认值
YearRangeIntRange默认可选年份范围1900..2100
YearColumnWidthDp年份列默认宽度76.dp
MonthColumnWidthDp月份列默认宽度96.dp
DayColumnWidthDp日列默认宽度62.dp
InsideMarginPaddingValues滚轮列周围的默认内边距PaddingValues(vertical = 12.dp)
YearLabel(Int) -> String纯年份数字
MonthLabel(Int) -> String英文月份缩写"Jan".."Dec"
DayLabel(Int) -> String两位补零数字"01".."31"

进阶用法 ​

自定义年份范围 ​

kotlin
DatePicker(
    value = date,
    onValueChange = { date = it },
    yearRange = 2000..2030
)

本地化标签 ​

传入自定义标签函数以本地化滚轮项目。例如中文 COUI 风格会把单位嵌入每个项目:

kotlin
DatePicker(
    value = date,
    onValueChange = { date = it },
    yearLabel = { "${it}年" },
    monthLabel = { "${it}月" },
    dayLabel = { "${it}日" }
)

自定义颜色 ​

kotlin
DatePicker(
    value = date,
    onValueChange = { date = it },
    colors = NumberPickerDefaults.colors(
        selectedTextColor = Color.Red,
        unselectedTextColor = Color.Gray
    )
)

变更日志

基于 Apache-2.0 许可发布