1# CalendarPicker
2
3日历选择器组件,提供下拉日历弹窗,可以让用户选择日期。
4
5>  **说明:**
6>
7>  该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9
10## 子组件
11
1213
14## 接口
15
16CalendarPicker(options?: CalendarOptions)
17
18日历选择器。
19
20**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
21
22**系统能力:** SystemCapability.ArkUI.ArkUI.Full
23
24**参数:**
25
26| 参数名  | 类型                                        | 必填 | 说明                       |
27| ------- | ------------------------------------------- | ---- | -------------------------- |
28| options | [CalendarOptions](#calendaroptions对象说明) | 否   | 配置日历选择器组件的参数。 |
29
30## 属性
31
32除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:
33
34### edgeAlign
35
36edgeAlign(alignType: CalendarAlign, offset?: Offset)
37
38设置选择器与入口组件的对齐方式。
39
40**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
41
42**系统能力:** SystemCapability.ArkUI.ArkUI.Full
43
44**参数:**
45
46| 参数名    | 类型                                    | 必填 | 说明                                                         |
47| --------- | --------------------------------------- | ---- | ------------------------------------------------------------ |
48| alignType | [CalendarAlign](#calendaralign枚举说明) | 是   | 对齐方式类型。<br/>默认值:CalendarAlign .END                |
49| offset    | [Offset](ts-types.md#offset)            | 否   | 按照对齐类型对齐后,选择器相对入口组件的偏移量。<br/>默认值:{dx: 0, dy: 0} |
50
51### textStyle
52
53textStyle(value: PickerTextStyle)
54
55入口区的文本颜色、字号、字体粗细。
56
57**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
58
59**系统能力:** SystemCapability.ArkUI.ArkUI.Full
60
61**参数:**
62
63| 参数名 | 类型                                                         | 必填 | 说明                                                         |
64| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
65| value  | [PickerTextStyle](./ts-basic-components-datepicker.md#pickertextstyle10类型说明) | 是   | 设置入口区的文本颜色、字号、字体粗细。<br/>默认值:<br/>{<br/>color: '#ff182431',<br/>font: {<br/>size: '16fp', <br/>weight: FontWeight.Regular<br/>}<br/>} |
66
67## 事件
68
69除支持[通用事件](ts-universal-events-click.md),还支持以下事件:
70
71### onChange
72
73onChange(callback: Callback\<Date>)
74
75选择日期时触发该事件。
76
77**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
78
79**系统能力:** SystemCapability.ArkUI.ArkUI.Full
80
81**参数:**
82
83| 参数名   | 类型                                      | 必填 | 说明           |
84| -------- | ----------------------------------------- | ---- | -------------- |
85| callback | [Callback](ts-types.md#callback12)\<Date> | 是   | 选中的日期值。 |
86
87##  CalendarOptions对象说明
88
89**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
90
91**系统能力:** SystemCapability.ArkUI.ArkUI.Full
92
93| 名称      | 类型       | 必填        | 说明                            |
94| ----------- | ---------- | ------| --------------------------------- |
95| hintRadius | number \| [Resource](ts-types.md#resource) | 否    | 描述日期选中态底板样式。<br/>默认值:底板样式为圆形。<br />**说明:**<br />hintRadius为0,底板样式为直角矩形。hintRadius为0 ~ 16,底板样式为圆角矩形。hintRadius>=16,底板样式为圆形 |
96| selected | Date | 否    | 设置选中项的日期。选中的日期未设置或日期格式不符合规范则为默认值。<br/>默认值:当前系统日期。 |
97
98## CalendarAlign枚举说明
99
100**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
101
102**系统能力:** SystemCapability.ArkUI.ArkUI.Full
103
104| 名称   | 描述                     |
105| ------ | ------------------------ |
106| START  | 设置选择器与入口组件左对齐的对齐方式。   |
107| CENTER | 设置选择器与入口组件居中对齐的对齐方式。 |
108| END    | 设置选择器与入口组件右对齐的对齐方式。   |
109
110## 示例
111
112该示例实现了日历选择器组件,提供下拉日历弹窗。
113
114```ts
115// xxx.ets
116@Entry
117@Component
118struct CalendarPickerExample {
119  private selectedDate: Date = new Date('2024-03-05')
120
121  build() {
122    Column() {
123      Text('月历日期选择器').fontSize(30)
124      Column() {
125        CalendarPicker({ hintRadius: 10, selected: this.selectedDate })
126          .edgeAlign(CalendarAlign.END)
127          .textStyle({ color: "#ff182431", font: { size: 20, weight: FontWeight.Normal } })
128          .margin(10)
129          .onChange((value) => {
130            console.info("CalendarPicker onChange:" + JSON.stringify(value))
131          })
132      }.alignItems(HorizontalAlign.End).width("100%")
133    }.width('100%').margin({ top: 350 })
134  }
135}
136```
137
138![CalendarPicker](figures/CalendarPicker.gif)
139