• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# CalendarPicker
2
3日历选择器组件,提供下拉日历弹窗,可以让用户选择日期。
4
5>  **说明:**
6>
7> 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8>
9> 该组件不支持在Wearable设备上使用。
10
11
12## 子组件
13
1415
16## 接口
17
18CalendarPicker(options?: CalendarOptions)
19
20日历选择器。
21
22**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
23
24**系统能力:** SystemCapability.ArkUI.ArkUI.Full
25
26**参数:**
27
28| 参数名  | 类型                                        | 必填 | 说明                       |
29| ------- | ------------------------------------------- | ---- | -------------------------- |
30| options | [CalendarOptions](#calendaroptions对象说明) | 否   | 配置日历选择器组件的参数。 |
31
32## 属性
33
34除支持[通用属性](ts-component-general-attributes.md)外,还支持以下属性:
35
36### edgeAlign
37
38edgeAlign(alignType: CalendarAlign, offset?: Offset)
39
40设置选择器与入口组件的对齐方式。
41
42**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
43
44**系统能力:** SystemCapability.ArkUI.ArkUI.Full
45
46**参数:**
47
48| 参数名    | 类型                                    | 必填 | 说明                                                         |
49| --------- | --------------------------------------- | ---- | ------------------------------------------------------------ |
50| alignType | [CalendarAlign](#calendaralign枚举说明) | 是   | 对齐方式类型。<br/>默认值:CalendarAlign.END                 |
51| offset    | [Offset](ts-types.md#offset)            | 否   | 按照对齐类型对齐后,选择器相对入口组件的偏移量。<br/>默认值:{dx: 0, dy: 0} |
52
53### edgeAlign<sup>18+</sup>
54
55edgeAlign(alignType: Optional\<CalendarAlign>, offset?: Offset)
56
57设置选择器与入口组件的对齐方式。与[edgeAlign](#edgealign)相比,alignType参数新增了对undefined类型的支持。
58
59**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
60
61**系统能力:** SystemCapability.ArkUI.ArkUI.Full
62
63**参数:**
64
65| 参数名    | 类型                                                         | 必填 | 说明                                                         |
66| --------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
67| alignType | [Optional](ts-universal-attributes-custom-property.md#optional12)\<[CalendarAlign](#calendaralign枚举说明)> | 是   | 对齐方式类型。<br/>当alignType的值为undefined时,默认值:CalendarAlign.END |
68| offset    | [Offset](ts-types.md#offset)                                 | 否   | 按照对齐类型对齐后,选择器相对入口组件的偏移量。<br/>默认值:{dx: 0, dy: 0} |
69
70### textStyle
71
72textStyle(value: PickerTextStyle)
73
74入口区的文本颜色、字号、字体粗细。
75
76**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
77
78**系统能力:** SystemCapability.ArkUI.ArkUI.Full
79
80**参数:**
81
82| 参数名 | 类型                                                         | 必填 | 说明                                                         |
83| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
84| value  | [PickerTextStyle](./ts-basic-components-datepicker.md#pickertextstyle10类型说明) | 是   | 设置入口区的文本颜色、字号、字体粗细。<br/>默认值:<br/>{<br/>color: '#ff182431',<br/>font: {<br/>size: '16fp', <br/>weight: FontWeight.Regular<br/>}<br/>} |
85
86### textStyle<sup>18+</sup>
87
88textStyle(style: Optional\<PickerTextStyle>)
89
90入口区的文本颜色、字号、字体粗细。与[textStyle](#textstyle)相比,style参数新增了对undefined类型的支持。
91
92**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
93
94**系统能力:** SystemCapability.ArkUI.ArkUI.Full
95
96**参数:**
97
98| 参数名 | 类型                                                         | 必填 | 说明                                                         |
99| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
100| style  | [Optional](ts-universal-attributes-custom-property.md#optional12)\<[PickerTextStyle](./ts-basic-components-datepicker.md#pickertextstyle10类型说明)> | 是   | 设置入口区的文本颜色、字号、字体粗细。<br/>当style的值为undefined时,默认值:<br/>{<br/>color: '#ff182431',<br/>font: {<br/>size: '16fp', <br/>weight: FontWeight.Regular<br/>}<br/>} |
101
102## 事件
103
104除支持[通用事件](ts-component-general-events.md),还支持以下事件:
105
106### onChange
107
108onChange(callback: Callback\<Date>)
109
110选择日期时触发该事件。
111
112**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
113
114**系统能力:** SystemCapability.ArkUI.ArkUI.Full
115
116**参数:**
117
118| 参数名 | 类型 | 必填 | 说明           |
119| ------ | ---- | ---- | -------------- |
120| callback | [Callback](ts-types.md#callback12)\<Date> | 是   | 选中的日期值。 |
121
122### onChange<sup>18+</sup>
123
124onChange(callback: Optional\<Callback\<Date>>)
125
126选择日期时触发该事件。与[onChange](#onchange)相比,callback参数新增了对undefined类型的支持。
127
128**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
129
130**系统能力:** SystemCapability.ArkUI.ArkUI.Full
131
132**参数:**
133
134| 参数名   | 类型                                                         | 必填 | 说明                                                         |
135| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
136| callback | [Optional](ts-universal-attributes-custom-property.md#optional12)\<[Callback](ts-types.md#callback12)\<Date>> | 是   | 选中的日期值。<br>当callback的值为undefined时,不使用回调函数。 |
137
138##  CalendarOptions对象说明
139
140**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
141
142**系统能力:** SystemCapability.ArkUI.ArkUI.Full
143
144| 名称      | 类型       | 必填        | 说明                            |
145| ----------- | ---------- | ------| --------------------------------- |
146| hintRadius | number \| [Resource](ts-types.md#resource) | 否    | 描述日期选中态底板样式。<br />取值范围:[0, 16]<br />单位:vp<br/>默认值:底板样式为圆形。<br />**说明:**<br />当hintRadius为0时,底板样式为直角矩形。当hintRadius的值在0到16之间时,底板样式为圆角矩形。当hintRadius大于或等于16时,底板样式为圆形。 |
147| selected | Date | 否    | 设置选中项的日期。选中的日期未设置或日期格式不符合规范则为默认值。<br/>默认值:当前系统日期。 |
148| start<sup>18+</sup> | Date | 否    | 设置开始日期。 |
149| end<sup>18+</sup> | Date | 否    | 设置结束日期。 |
150
151**start和end设置规则:**
152
153| 场景   | 说明  |
154| -------- |  ------------------------------------------------------------ |
155| start日期晚于end日期    | start日期、end日期都设置无效,选中日期为默认值  |
156| 选中日期早于start日期    | 选中日期为start日期  |
157| 选中日期晚于end日期    | 选中日期为end日期  |
158| start日期晚于当前系统日期,选中日期未设置    | 选中日期为start日期  |
159| end日期早于当前系统日期,选中日期未设置    | 选中日期为end日期  |
160| 日期格式不符合规范,如‘1999-13-32’ | start日期或end日期设置无效,选中日期取默认值  |
161
162## CalendarAlign枚举说明
163
164**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
165
166**系统能力:** SystemCapability.ArkUI.ArkUI.Full
167
168| 名称   | 描述                     |
169| ------ | ------------------------ |
170| START  | 设置选择器与入口组件左对齐的对齐方式。   |
171| CENTER | 设置选择器与入口组件居中对齐的对齐方式。 |
172| END    | 设置选择器与入口组件右对齐的对齐方式。   |
173
174## 示例
175### 示例1(设置下拉日历弹窗)
176
177该示例实现了日历选择器组件,提供下拉日历弹窗。
178
179```ts
180// xxx.ets
181@Entry
182@Component
183struct CalendarPickerExample {
184  private selectedDate: Date = new Date('2024-03-05')
185
186  build() {
187    Column() {
188      Column() {
189        CalendarPicker({ hintRadius: 10, selected: this.selectedDate })
190          .edgeAlign(CalendarAlign.END)
191          .textStyle({ color: "#ff182431", font: { size: 20, weight: FontWeight.Normal } })
192          .margin(10)
193          .onChange((value) => {
194            console.info("CalendarPicker onChange:" + JSON.stringify(value))
195          })
196      }.alignItems(HorizontalAlign.End).width("100%")
197
198      Text('日历日期选择器').fontSize(30)
199    }.width('100%').margin({ top: 350 })
200  }
201}
202```
203
204![CalendarPicker](figures/CalendarPicker.gif)
205
206### 示例2(设置开始日期和结束日期)
207
208该示例通过start和end设置日历选择器的开始日期和结束日期。
209
210```ts
211// xxx.ets
212@Entry
213@Component
214struct CalendarPickerExample {
215  private selectedDate: Date = new Date('2025-01-15')
216  private startDate: Date = new Date('2025-01-05')
217  private endDate: Date = new Date('2025-01-25')
218
219  build() {
220    Column() {
221      Column() {
222        CalendarPicker({ hintRadius: 10, selected: this.selectedDate, start: this.startDate, end: this.endDate })
223          .edgeAlign(CalendarAlign.END)
224          .textStyle({ color: "#ff182431", font: { size: 20, weight: FontWeight.Normal } })
225          .margin(10)
226          .onChange((value) => {
227            console.info("CalendarPicker onChange:" + JSON.stringify(value))
228          })
229      }.alignItems(HorizontalAlign.End).width("100%")
230    }.width('100%').margin({ top: 350 })
231  }
232}
233```
234
235![CalendarPicker](figures/calendar_picker_start_end.jpg)
236