1# ArkUI子系统变更说明
2
3## cl.arkui.1 DatePickerDialog、TimePickerDialog、TextPickerDialog设置alignment参数显示效果变更
4
5**访问级别**
6
7公开接口
8
9**变更原因**
10
11规格优化。
12
13**变更影响**
14
15该变更为兼容性变更。
16
17DatePickerDialog、TimePickerDialog、TextPickerDialog支持通过设置alignment参数调整滑动选择器弹窗相对于窗口的弹出位置。具体受影响的场景见下文:
18
19a) 设置alignment为Top、TopStart、TopEnd
20
21变更前:与窗口顶部默认有40vp的间距
22
23变更后:与窗口顶部的间距为0
24
25b) 设置alignment为Bottom
26
27变更前:与窗口底部默认有16vp的间距
28
29变更后:与窗口底部的间距为0
30
31c) 设置alignment为Center
32
33变更前:相对于窗口正中位置默认有16vp的向上偏移
34
35变更后:处于窗口正中位置
36
37**API Level**
38
3911
40
41**变更发生版本**
42
43从OpenHarmony SDK 4.1.5.3开始。
44
45**变更的接口/组件**
46
47日期滑动选择器弹窗(DatePickerDialog)、时间滑动选择器弹窗(TimePickerDialog)、文本滑动选择器弹窗(TextPickerDialog)
48
49**适配指导**
50
51DatePickerDialog、TimePickerDialog、TextPickerDialog设置alignment时与窗口边缘的间距通过offset设置来调整。
52
53## cl.arkui.2 SegmentButton组件buttonMargin、textMargin接口命名变更
54
55**访问级别**
56
57公开接口
58
59**变更原因**
60
61原接口命名与接口实际功能不符。
62
63**变更影响**
64
65该变更为非兼容性变更。修改SegmentButton用于设置按钮内边距、文本内边距的接口命名:
66
67a) 按钮内边距接口命名变更
68
69变更前:buttonMargin
70
71变更后:buttonPadding
72
73b) 文本内边距接口命名变更
74
75变更前:textMargin
76
77变更后:textPadding
78
79**变更发生版本**
80
81从OpenHarmony SDK 4.1.5.3开始。
82
83**变更的接口/组件**
84
85分段按钮(SegmentButton)。
86
87**适配指导**
88
89变更前:
90
91分段按钮通过buttonMargin、textMargin进行按钮内边距、文本内边距的设置。
92
93变更后:
94
95分段按钮通过buttonPadding、textPadding进行按钮内边距、文本内边距的设置。
96
97## cl.arkui.3 TextInput组件cancelButton接口IconOptions.size参数默认值变更
98
99**访问级别**
100
101公开接口
102
103**变更原因**
104
105cancelButton接口不设置IconOptions.size参数,图片的实际尺寸与开发者获取的尺寸不符。
106
107**变更影响**
108
109该变更为非兼容性变更。cancelButton接口不设置IconOptions.size参数,开发者获取的图片尺寸发生变更,变更如下:
110
111变更前:0.00px
112
113变更后:24.00vp
114
115**变更发生版本**
116
117从OpenHarmony SDK 4.1.5.3开始。
118
119**变更的接口/组件**
120
121单行文本输入框(TextInput)
122
123**适配指导**
124
125TextInput设置cancelButton时不设置IconOptions.size参数可以获取正确的图片尺寸24.00vp。
126
127## cl.arkui.4 变更@Prop和@BuilderParam初始化校验规格
128
129**访问级别**
130
131公开接口。
132
133**变更原因**
134
135@Require和@Prop或者@BuilderParam结合使用能够决定是否需要从父组件构造传参,现@Prop和@BuilderParam的初始化校验变更。
136
137**变更影响**
138
139该变更为非兼容性变更。变更@Prop和@BuilderParam初始化校验规格。增加当@Require装饰器和@Prop装饰器或者@BuilderParam装饰器结合使用时,@Prop装饰器或者 @BuilderParam装饰器修饰的变量值必须由父组件构造传参,如父组件未构造传参,编译报错。如果@Prop、@BuilderParam没有和@Require结合使用,不会进行构造传参初始化校验。
140
141**API Level**
142
14311
144
145**变更发生版本**
146
147从OpenHarmony SDK 4.1.5.3 开始。
148
149**示例:**
150
151```
152@Entry
153@Component
154struct Index {
155  build() {
156    Row() {
157      Child()
158    }
159  }
160}
161
162@Component
163struct Child {
164  // ERROR: Property buildText must be initialized through the component constructor.
165  @Require @BuilderParam buildText: () => void;
166  // ERROR: Property initBuildText must be initialized through the component constructor.
167  @Require @BuilderParam initBuildText: () => void = buildFuction;
168  // ERROR: Property message must be initialized through the component constructor.
169  @Require @Prop message: string = 'Hello';
170  // ERROR: Property initMessage must be initialized through the component constructor.
171  @Require @Prop initMessage: string;
172  // 删除ERROR: Property 'chindProp' in the custom component 'Child' is missing assignment or initialization.
173  @Prop chindProp: string;
174  // 删除ERROR: Property 'chindBuildParam' in the custom component 'Child' is missing assignment or initialization.
175  @BuilderParam chindBuildParam: () => void;
176
177  build() {
178  }
179}
180
181@Builder
182function buildFuction() {
183}
184```
185
186**变更的接口/组件**
187
188不涉及。
189
190**适配指导**
191
192当\@Require装饰器和\@Prop装饰器或者\@BuilderParam装饰器结合使用时,\@Prop和\@BuilderParam必须在构造时传参。
193
194
195
196## cl.arkui.5 变更popup样式与避让逻辑规格
197
198**访问级别**
199
200公开接口。
201
202**变更原因**
203
204UX能力增强。
205
206**变更影响**
207
208该变更为兼容性变更。
209
2101. 未设置气泡背景色,默认背景色加模糊填充效果。如果需要去掉模糊背景效果,可以通过调用backgroundBlurStyle接口,并设置BlurStyle.NONE(backgroundBlurStyle: BlurStyle.NONE)去掉即可。
211
212   ```ts
213   // xxx.ets
214   @Entry
215   @Component
216   struct PopupExample {
217     @State handlePopup: boolean = false
218
219     build() {
220       Column() {
221         // PopupOptions 类型设置弹框内容
222         Button('PopupOptions')
223           .onClick(() => {
224             this.handlePopup = !this.handlePopup;
225           })
226           .bindPopup(this.handlePopup, {
227             message: 'This is a popup with PopupOptions',
228             backgroundBlurStyle: BlurStyle.NONE,
229           })
230           .position({ x: 100, y: 150 })
231       }
232     }
233   }
234   ```
235
2362. 增加12种对齐方式:
237
238   - 上边:TopLeft/Top/TopRight
239   - 下边:BottomLeft/Bottom/BottomRight
240   - 左边:LeftTop/Left/LeftBottom
241   - 右边:RightTop/Right/RightBottom
242
243   ![popup_placement.png](figures/popup_placement.png)
244
245   ```ts
246   // xxx.ets
247   @Entry
248   @Component
249   struct PopupExample {
250     @State handlePopup: boolean = false;
251
252     build() {
253       Column() {
254         // PopupOptions 类型设置弹框内容
255         Button('按钮名称')
256           .onClick(() => {
257             this.handlePopup = !this.handlePopup;
258           })
259           .bindPopup(this.handlePopup, {
260             message: 'Test',
261             placement: Placement.Bottom
262           })
263           .position({ x: 100, y: 150 })
264       }
265     }
266   }
267   ```
268
2693. PopupOptions类型气泡有按钮时,点击气泡区域外消失。
270
271   - 变更前:PopupOptions类型气泡有按钮时,点击气泡区域外消失。
272
273   - 变更后:PopupOptions类型气泡有按钮时,点击气泡区域外不消失。
274
275   > **说明:**
276   >
277   > PopupOptions类型气泡有按钮时,是指bindPopup传入PopupOptions数据结构时,primaryButton或secondaryButton有一个或多个不为空。
278
2794. PopupOptions类型气泡文本超长时添加scroll可以滑动显示。
280
281   - 变更前:PopupOptions类型气泡文本超长时被截断。
282
283   - 变更后:PopupOptions类型气泡文本超长时添加scroll可以滑动显示。
284
2855. PopupOptions类型气泡文本颜色取分层参数中ohos_id_color_text_primary值。
286
287   - 变更前:PopupOptions类型气泡文本颜色取分层参数中ohos_id_color_text_primary_contrary值。
288
289   - 变更后:PopupOptions类型气泡文本颜色取分层参数中ohos_id_color_text_primary值。
290
2916. PopupOptions类型气泡按钮颜色取分层参数中ohos_id_color_text_primary_activated值。
292
293   - 变更前:PopupOptions类型气泡按钮颜色取分层参数中ohos_id_color_text_primary_contrary值。
294
295   - 变更后:PopupOptions类型气泡按钮颜色取分层参数中ohos_id_color_text_primary_activated值。
296
2977. PopupOptions类型气泡按钮布局使用Flex可超长换行。
298
299   - 变更前:PopupOptions类型气泡按钮布超长时显示截断。
300
301   - 变更后:PopupOptions类型气泡按钮布局使用Flex可超长换行。
302
3038. CustomPopupOptions类型气泡新增可配置获焦能力,需要调用CustomPopupOptions中focusable接口并设置为true。
304
305   ```ts
306   // xxx.ets
307   @Entry
308   @Component
309   struct PopupExample {
310     @State customPopup: boolean = false
311
312     // popup构造器定义弹框内容
313     @Builder
314     popupBuilder() {
315       Row({ space: 2 }) {
316         Button("button1")
317         Button("button2")
318       }
319     }
320
321     build() {
322       Column() {
323         // CustomPopupOptions 类型设置弹框内容
324         Button('CustomPopupOptions')
325           .position({ x: 80, y: 300 })
326           .onClick(() => {
327             this.customPopup = !this.customPopup
328           })
329           .bindPopup(this.customPopup, {
330             builder: this.popupBuilder,
331             focusable: true
332           })
333       }
334     }
335   }
336   ```
337
3389. `showInSubWindow=true`(可超出窗口显示)时最大高度为设备屏幕高度,`showInSubWindow=false`(不可超出窗口)时最大高度为应用窗口高度。
339
340   - 变更前:没有最大高度限制,文本过长会截断显示。
341
342   - 变更后:有最大高度显示,文本过长会添加滚动条显示文本。
343
344   `showInSubWindow=true`(可超出窗口显示)时最大高度为设备屏幕高度。即状态栏高度(无状态栏时为0)至底部Dock栏高度(无Dock栏时高度为0)。
345
346   `showInSubWindow=false`(不可超出窗口)时最大高度为应用窗口高度。即状态栏高度(无状态栏时为0)至底部Dock栏高度(无Dock栏时高度为0)。
347
348   > **说明:**
349   >
350   > 最大高度距离最上方和最下方分别有40vp的间距。
351
352上述第1、第5和第6条变更前后样式对比如下图所示。
353
354- 变更前:
355  ![before](figures/popup_before.png)
356- 变更后:
357  ![after](figures/popup_after.png)
358
359> **说明:**
360>
361> - PopupOptions类型气泡为,bindPopup传入PopupOptions数据结构时的气泡。
362>
363> - CustomPopupOptions类型气泡为,bindPopup传入CustomPopupOptions数据结构时的气泡。
364
365**API Level**
366
36711
368
369**变更发生版本**
370
371从OpenHarmony SDK 4.1.5.2 开始。
372
373**变更的接口/组件**
374
375bindPopup属性。
376
377**适配指导**
378
3791.根据用户需求自定义气泡背景色,详情参考第1条。
380
3812.根据用户需求自定气泡获焦能力,详情参考第8条。
382
383## cl.Arkui.6 弹窗类组件支持可显示在子窗口
384
385**访问级别**
386
387公开接口
388
389**变更原因**
390
391UX能力增强
392
393**变更影响**
394
395该变更为兼容性变更,为AlterDialog、ActionSheet组件以及promptAction的showDialog和showActionMenu这几种弹窗的接口添加CustomDialog组件已有的showInSubWindow属性,默认值为false。手动设置为true时,该弹窗会创建在子窗口上,可显示在应用窗口外。
396
397**API Level**
398
39911
400
401**变更发生版本**
402
403从OpenHarmony SDK 4.1.5.5开始。
404
405**变更的接口/组件**
406
407API 11前,只有CustomDialog组件的CustomDialogControllerOptions接口有showInSubWindow属性,showInSubWindow默认值为false,手动设置为true时,该弹窗会创建在子窗口上,可显示在应用窗口外,设置为false时,弹窗创建在应用窗口上。
408
409API 11及以后,AlterDialog、CustomDialog、ActionSheet组件以及promptAction的showDialog和showActionMenu接口创建的弹窗都有showInSubWindow属性,showInSubWindow默认值为false,手动设置为true时,该弹窗会创建在子窗口上,可显示在应用窗口外,设置为false时,弹窗创建在应用窗口上。
410
411**适配指导**
412
413新功能实现兼容原有功能,不涉及适配。
414
415## cl.Arkui.7 CustomDialog组件的蒙层范围的更改
416
417**访问级别**
418
419公开接口
420
421**变更原因**
422
423UX一致性需求变更
424
425**变更影响**
426
427该变更为非兼容性变更。
428
429变更前,showInSubWindow为true时,CustomDialog的蒙层范围为子窗口范围,showInSubWindow为false时,CustomDialog的蒙层范围为应用窗口范围。
430
431![zh-cn_image_alert](figures/zh-cn_image_alert.gif)
432
433变更后,无论showInSubWindow为true还是false,CustomDialog的蒙层范围都为应用窗口的范围。
434
435![zh-cn_image_alert_showinsubwindow](figures/zh-cn_image_alert_showinsubwindow.jpg)
436
437**API Level**
438
43911
440
441**变更发生版本**
442
443从OpenHarmony SDK 4.1.5.5开始。
444
445**变更的接口/组件**
446
447API 11前,showInSubWindow为true时,CustomDialog的蒙层范围为子窗口范围,showInSubWindow为false时,CustomDialog的蒙层范围为应用窗口范围。
448
449API 11及以后,无论showInSubWindow为true还是false,CustomDialog的蒙层范围都为应用窗口的范围。
450
451**适配指导**
452
453原有的showInSubWindow为true时自定义弹窗蒙层范围固定为为子窗口范围,现在showInSubWindow为true时自定义弹窗弹窗蒙层范围是应用窗口的范围,可以通过控制应用窗口的范围控制蒙层范围。
454
455## cl.Arkui.8 弹窗类组件组件的蒙层是否显示的可配置
456
457**访问级别**
458
459公开接口
460
461**变更原因**
462
463UX能力增强
464
465**变更影响**
466
467该变更为兼容性变更,为AlterDialog、CustomDialog、ActionSheet组件以及promptAction的showDialog和showActionMenu这几种弹窗的接口添加isModal属性,默认值为true。isModal属性为true时,弹窗有蒙层,isModal属性为false时,弹窗无蒙层。
468
469**API Level**
470
47111
472
473**变更发生版本**
474
475从OpenHarmony SDK 4.1.5.5开始。
476
477**变更的接口/组件**
478
479API 11前,无isModal属性,所有弹窗都有蒙层。
480
481API 11及以后,添加isModal属性,默认值为true。isModal属性为true时,弹窗有蒙层,isModal属性为false时,弹窗无蒙层。
482
483**适配指导**
484
485新功能实现兼容原有功能,不涉及适配。
486
487## cl.Arkui.9 Popup高级组件接口修改
488
489**访问级别**
490
491公开接口
492
493**变更原因**
494
495UX能力增强
496
497**变更影响**
498
499@ohos.arkui.advanced.Popup(气泡组件)的PopupIconOptions数据结构中,image变量不可传入PixelMap与DrawableDescriptor数据类型。
500
501**API Level**
502
50311
504
505**变更发生版本**
506
507从OpenHarmony SDK 4.1.5.2 开始。
508
509**变更的接口/组件**
510
511API 11前,无。
512
513API 11及以后,@ohos.arkui.advanced.Popup(气泡组件)的PopupIconOptions数据结构中,image变量只可传入ResourceStr数据类型。
514
515**适配指导**
516
517@ohos.arkui.advanced.Popup(气泡组件)的PopupIconOptions数据结构中,image变量传入ResourceStr数据类型。