1## cl.arkui.1 Menu组件箭头离宿主节点默认安全边距变更
2
3**访问级别**
4
5公开接口
6
7**变更原因**
8
9带箭头菜单离宿主节点过远,变更后效果更佳。
10
11**变更影响**
12
13| 变更前箭头离宿主节点16vp | 变更后箭头离宿主节点8vp |
14|---------|---------|
15|  ![变更前箭头离宿主节点16vp](figures/menu-with-arrow-16vp.png)       |  ![变更后箭头离宿主节点8vp](figures/menu-with-arrow-8vp.png)       |
16
17**起始API Level**
18
19API10
20
21**变更发生版本**
22
23从OpenHarmony SDK 5.0.0.35 版本开始。
24
25**变更的接口/组件**
26
27Menu组件。
28
29**适配指导**
30
31带箭头菜单离宿主节点的默认安全距离变小,若需要更大的间距,可设置菜单的offset进行调整。
32
33## cl.arkui.2 MenuItemGroup嵌套MenuItem且MenuItem设置margin top或者bottom时,布局效果变更
34
35**访问级别**
36
37公开接口
38
39**变更原因**
40
41MenuItemGroup高度没有加上MenuItem的margin高度,布局错乱,变更后布局正常。
42
43**变更影响**
44
45
46示例代码:
47```ts
48@Entry
49@Component
50struct Index {
51  build() {
52    Row() {
53      Button("菜单1").bindMenu(this.TestMarginTop())
54    }
55  }
56
57  @Builder
58  TestMarginTop() {
59    Menu() {
60      MenuItemGroup() {
61        MenuItem({content:"第一个"}).margin({top:20, bottom:20}).borderWidth(2).borderColor(Color.Black)
62        MenuItem({content:"第二个"}).margin({top:20}).borderWidth(2).borderColor(Color.Black)
63        MenuItem({content:"第三个"}).margin({bottom:20}).borderWidth(2).borderColor(Color.Black)
64        MenuItem({content:"第四个"}).borderWidth(2).borderColor(Color.Black)
65      }
66    }
67  }
68}
69```
70
71
72| 变更前布局错乱 | 变更后布局正常 |
73|---------|---------|
74|  ![变更前布局错乱](figures/menuitemgroup-height-without-item-margin.jpg)       |  ![变更后布局正常](figures/menuitemgroup-height-with-item-margin.jpg)       |
75
76**起始API Level**
77
78API7
79
80**变更发生版本**
81
82从OpenHarmony SDK 5.0.0.35 版本开始。
83
84**变更的接口/组件**
85
86Menu组件。
87
88**适配指导**
89
90菜单布局效果变更,应用无需适配。
91
92## cl.arkui.3 Menu中MenuItem全部设置margin后,左右边距布局效果变更
93
94**访问级别**
95
96公开接口
97
98**变更原因**
99
100Menu中MenuItem全部设置margin后,左右边距不对称,变更后左右对称。
101
102**变更影响**
103
104示例代码:
105```ts
106@Entry
107@Component
108struct Index {
109  build() {
110    Column() {
111      Text('click for Menu')
112        .fontSize(20)
113        .margin({ top: 20 })
114        .bindMenu(this.TestMenuItemMarginLeftAndRight)
115    }
116    .height('100%')
117    .width('100%')
118  }
119
120  @Builder
121  TestMenuItemMarginLeftAndRight() {
122    Menu() {
123      MenuItem({content:"这是menuitem1"}).margin(10).borderWidth(1)
124    }
125    .borderWidth(2)
126    .borderColor(Color.Red)
127    .width(200)
128  }
129}
130```
131
132
133| 变更前边距不对称 | 变更后左右对称 |
134|---------|---------|
135|  ![变更前边距不对称](figures/menuitem-not-center-with-margin.jpg)       |  ![变更后左右对称](figures/menuitem-is-center-with-margin.jpg)       |
136
137**起始API Level**
138
139API7
140
141**变更发生版本**
142
143从OpenHarmony SDK 5.0.0.35 版本开始。
144
145**变更的接口/组件**
146
147Menu组件。
148
149**适配指导**
150
151菜单布局效果变更,应用无需适配。
152
153## cl.arkui.4 菜单避让手机挖孔变更
154
155**访问级别**
156
157公开接口
158
159**变更原因**
160
161开发者在应用侧的module.json5中配置开启避让手机挖孔时,菜单未避让挖孔。
162
163``` json
164{
165    "module": {
166        "metadata": [
167            {
168                "name" : "avoid_cutout",
169                "value": "true",
170            }
171        ]
172    }
173}
174```
175
176**变更影响**
177
178该变更为不兼容性变更。
179
180变更前:竖屏时菜单默认避让挖孔;横屏时,应用配置开启避让手机挖孔,菜单不会避让挖孔。
181
182变更后:竖屏时菜单默认避让挖孔;横屏时,应用配置开启避让手机挖孔,菜单会避让挖孔。
183
184![menu_avoid_cutout](figures/menu_avoid_cutout.png)
185
186**起始API Level**
187
188Menu组件的BindMenu接口 API 7
189
190Menu组件的BindContextMenu接口 API 8
191
192**变更发生版本**
193
194从OpenHarmony SDK 5.0.0.35开始。
195
196**变更的接口/组件**
197
198Menu组件的BindMenu接口
199
200Menu组件的BindContextMenu接口
201
202**适配指导**
203
204默认行为变更,无需适配。
205
206## cl.arkui.5 Repeat设置totalCount属性行为变更
207
208**访问级别**
209
210公开接口
211
212**变更原因**
213
214totoalCount表示UI显示的数据个数。当0 < totalCount < arr.length时,界面中只渲染“totalCount”个数据。
215
216**变更影响**
217
218该变更为不兼容性变更。
219
220变更前:Repeat设置totalCount属性时,如果totalCount小于数据长度,显示的数据个数为数据的长度。
221
222arr.length设置为10,totalCount设置为5。显示效果如图所示:
223
224![repeat-totalCount-changelog-before](./figures/repeat-totalCount-changelog-before.jpeg)
225
226变更后:Repeat设置totalCount属性时,如果totalCount小于数据长度,显示的数据个数为totalCount值。
227
228arr.length设置为10,totalCount设置为5。显示效果如图所示:
229
230![repeat-totalCount-changelog-before](./figures/repeat-totalCount-changelog-after.jpeg)
231
232**起始API Level**
233
23412
235
236**变更发生版本**
237
238从OpenHarmony SDK 5.0.0.35开始。
239
240**变更的接口/组件**
241
242Repeat组件。
243
244**适配指导**
245
246如果开发者想要显示的数据个数为数据长度时,需要将totalCount值设置为数组长度。示例代码如下:
247
248```ts
249@Entry
250@ComponentV2
251struct TestPage {
252  @Local simpleList: Array<string> = [];
253  private totalCount: number = 50;
254
255  aboutToAppear(): void {
256    for (let i = 0; i < 50; i++) {
257      this.simpleList.push('Hello ' + i);
258    }
259  }
260
261  build() {
262    Column({ space: 10 }) {
263      List() {
264        Repeat<string>(this.simpleList)
265          .each((obj: RepeatItem<string>) => {
266            ListItem() {
267              Text('[each] ' + obj.item)
268                .fontSize(30)
269                .margin({ top: 10 })
270            }
271          })
272          .key((item: string, index: number) => item)
273          .virtualScroll({ totalCount: this.totalCount })
274          .templateId((item: string, index: number) => "default")
275          .template('default', (ri) => {
276            Text('[template] ' + ri.item)
277              .fontSize(30)
278              .margin({ top: 10 })
279          }, { cachedCount: 3 })
280      }
281      .cachedCount(1)
282      .border({ width: 1 })
283      .height('50%')
284    }
285    .height('100%')
286    .justifyContent(FlexAlign.Center)
287  }
288}
289```
290
291## cl.arkui.6 TimePickerDialog标题高度变更
292
293**访问级别**
294
295公开接口
296
297**变更原因**
298
299修正视觉效果以获得更好的用户体验。
300
301**变更影响**
302
303该变更为不兼容变更。
304
305变更前:标题高度为46vp。
306
307变更后:标题高度为56vp。
308
309| 变更前 | 变更后 |
310|---------|---------|
311| ![](figures/TimePickerDialog_Before.png) | ![](figures/TimePickerDialog_After.png) |
312
313**起始API Level**
314
3158
316
317**变更发生版本**
318
319从OpenHarmony SDK 5.0.0.35开始。
320
321**变更的接口/组件**
322
323TimePickerDialog组件。
324
325**适配指导**
326
327默认行为变更,无需适配。
328
329## cl.arkui.7 SubMenu避让底部导航条距离变更
330
331**访问级别**
332
333公开接口
334
335**变更原因**
336
337Menu避让能贴近底部导航条,而SubMenu避让位置无法贴近底部导航条,视觉效果不好
338
339**变更影响**
340
341该变更为不兼容性变更。
342
343| 变更前:SubMenu避让底部导航条之后避让了一个固定高度的padding | 变更后:SubMenu仅避让底部导航条,不额外添加固定高度的padding |
344|---------|---------|
345|  ![变更前有间距](figures/submenu-padding-bottom-before.jpg)       |  ![变更后删除间距](figures/submenu-padding-bottom-after.jpg)
346
347**起始API Level**
348
3497
350
351**变更发生版本**
352
353从OpenHarmony SDK 5.0.0.35开始。
354
355**变更的接口/组件**
356
357Menu组件。
358
359**适配指导**
360
361默认行为变更,无需适配。
362
363## cl.arkui.8 menu、toast修改阴影参数
364**访问级别**
365
366公开接口
367
368**变更原因**
369
370当前menu、toast组件阴影不明显,背景颜色和组件颜色接近时,区分度不高。
371
372**变更影响**
373
374该变更为不兼容变更。
375
376| 变更前阴影 | 变更后阴影|
377|---------|---------|
378|  ![menu_Before](figures/menu_Before.png)       |  ![menu_After](figures/menu_After.png)       |
379|  ![toast_Before](figures/toast_Before.png)       |  ![toast_After](figures/toast_After.png)       |
380
381**起始API Level**
382
383Menu组件的BindMenu接口 API 7
384
385Menu组件的BindContextMenu接口 API 8
386
387Toast组件的ShowToast接口 API 9
388
389**变更发生版本**
390
391从OpenHarmony SDK 5.0.0.35开始。
392
393**变更的接口/组件**
394
395Menu组件的BindMenu接口
396
397Menu组件的BindContextMenu接口
398
399Toast组件ShowToast接口
400
401**适配指导**
402
403默认效果变更,无需适配。
404
405## cl.arkui.9 RichEditor设置预设样式的接口传入默认值时,文本样式效果变更
406
407**访问级别**
408
409公开接口
410
411**变更原因**
412
413RichEditor设置用户预设样式的接口setTypingStyle,传入默认值undefined/null后,开发者自定义预置样式依然存在,未恢复成不设置时效果。
414
415不设置时,当用户输入文本,输入后的文本样式跟随前一个文本的文本样式。
416
417**变更影响**
418
419该变更为不兼容变更
420
421变更前:
422
423当setTypingStyle设置为默认值时,调用接口setTypingStyle不生效。
424
425其效果为在任何文本后面持续输入的文本会一直保持之前开发者设置的预置样式,不会跟随前一个文本样式。
426
427变更后:
428
429当setTypingStyle设置为默认值时,会恢复为不设置时效果。
430
431其效果为在任何文本后面持续输入的文本时,会根据前一个文本样式去更新当前输入文本样式。
432
433**起始API Level**
434
43511
436
437**变更发生版本**
438
439从OpenHarmony SDK 5.0.0.35 版本开始。
440
441**变更的接口/组件**
442
443setTypingStyle
444
445**适配指导**
446
447开发者需要清除TypingStyle使用组件默认样式时,请参照如下代码。
448```ts
449@Entry
450@Component
451struct Index {
452  controller: RichEditorController = new RichEditorController()
453  options: RichEditorOptions = { controller: this.controller }
454  build() {
455      Column() {
456        RichEditor(this.options)
457          .borderWidth(1)
458          .borderColor(Color.Green)
459          .width("100%")
460          .height("50%")
461        Button('ResetTypingStyle')
462          .fontSize(10)
463          .onClick(() => {
464            // 清除TypingStyle
465            this.controller.setTypingStyle(undefined)
466            // this.controller.setTypingStyle(null)
467          })
468        Button('SetTypingStyle')
469          .fontSize(10)
470          .onClick(() => {
471            // 设置TypingStyle
472            this.controller.setTypingStyle({fontColor:"#ff0000"})
473          })
474    }
475  }
476}
477```
478
479## cl.arkui.10 RichEditor占位文本接口中文本样式属性传入异常值/默认值时,占位文本样式的效果变更
480
481**访问级别**
482
483公开接口
484
485**变更原因**
486
4871.RichEditor设置占位文本的接口placeholder,其占位文本样式属性PlaceHolderStyle为异常值"{}"时,组件未将占位文本样式属性设置为默认效果。
488
4892.当占位文本样式属性中各个属性为默认值undefined时,对应默认效果未生效。
490
491占位文本样式属性:
492
493- 文本尺寸(默认值 16vp)
494
495- 文本粗细(默认值 400)
496
497- 文本字体(默认值 当前系统字体/注册自定义字体)
498
499- 文本样式(默认值 FontStyle.Normal500
501- 文本颜色(默认值:跟随系统主题,一般为黑色)
502
503**变更影响**
504
505该变更为不兼容变更
506
507变更前:占位文本样式属性为异常值或其内部其他属性设为默认值时,调用接口placeholder未生效。
508
509变更后:占位文本样式属性为异常值或其内部其他属性设为默认值时,按组件默认占位文本样式/对应属性默认样式生效。
510
511**起始API Level**
512
51312
514
515**变更发生版本**
516
517从OpenHarmony SDK 5.0.0.35 版本开始。
518
519**变更的接口/组件**
520
521PlaceHolderStyle
522
523**适配指导**
524
525开发者需要排查调用设置占位文本placeholder中PlaceHolderStyle为异常值或其各个属性为异常值时,是否按照默认效果生效。
526
527以style为"{}"和fontcolor为默认值为例,见如下代码,请开发者自行排查。
528```ts
529@Entry
530@Component
531struct Index {
532  controller: RichEditorController = new RichEditorController()
533  options: RichEditorOptions = { controller: this.controller }
534  @State style: PlaceholderStyle = { fontColor: "#ff0000" };
535
536  build() {
537    Column() {
538      RichEditor(this.options)
539        .borderWidth(1)
540        .borderColor(Color.Green)
541        .width("100%")
542        .height("50%")
543        .placeholder("hello world", this.style)
544      Button('change style to {}')
545        .fontSize(10)
546        .onClick(() => {
547          this.style = {};
548        })
549      Button('change style.fontColor to undefined')
550        .fontSize(10)
551        .onClick(() => {
552          this.style = { fontColor: undefined };
553        })
554      Button('change style.fontColor to normal value')
555        .fontSize(10)
556        .onClick(() => {
557          this.style = { fontColor: "#ff0000" };
558        })
559    }
560  }
561}
562```
563
564## cl.arkui.11 MenuItem组件禁用状态下字体颜色变更
565
566**访问级别**
567
568公开接口
569
570**变更原因**
571
572MenuItem设置enable为false时, 组件将处于禁用状态,此时字体颜色为默认的灰色,开发者设置的字体颜色将不会生效。
573
574**变更影响**
575
576该变更为不兼容变更
577
578变更前:MenuItem设置enable为false时,无论开发者是否设置字体颜色,组件禁用状态下的字体颜色均为默认字体颜色 * 不透明度40%。
579
580变更后:MenuItem设置enable为false时,若开发者未设置字体颜色,则组件禁用状态下的字体颜色为默认字体颜色 * 不透明度40%;若开发者设置了字体颜色,则组件禁用状态下的字体颜色为自定义字体颜色 * 不透明度40%;
581
582![menuItem_disable](figures/menuItem_disable.png)
583
584**起始API Level**
585
5869
587
588**变更发生版本**
589
590从OpenHarmony SDK 5.0.0.35开始。
591
592**变更的接口/组件**
593
594MenuItem组件。
595
596**适配指导**
597
598默认行为变更,无需适配。
599
600## cl.arkui.12 RichEditor收起键盘后,选中区状态变更
601
602**访问级别**
603
604公开接口
605
606**变更原因**
607
608UX规格变更
609
610**变更影响**
611
612该变更为不兼容性变更。
613
614变更前:RichEditor非用户手动点击收起键盘按钮收起键盘时,触发组件失焦,关闭菜单,复位选中区。
615
616![变更前](figures/richeditor_selection_change_before.gif)
617
618变更后:RichEditor非用户手动点击收起键盘按钮收起键盘时,仅小窗模式下触发组件失焦,其他场景不触发组件失焦,不关闭菜单,不复位选中区。
619
620![变更后](figures/richeditor_selection_change_after.gif)
621
622**起始API Level**
623
62410
625
626**变更发生版本**
627
628从OpenHarmony SDK 5.0.0.35开始。
629
630**变更的接口/组件**
631
632RichEditor组件。
633
634**适配指导**
635
636非用户手动点击收起键盘按钮收起键盘时收起键盘时焦点状态变更,应用无需适配。
637
638## cl.arkui.13 dragInteraction接口增加系统接口校验
639
640**访问级别**
641
642系统接口。
643
644**变更原因**
645
646拖拽的监听等接口没有权限管控,恶意三方应用可以监听用户拖拽行为进行画像,因此将dragInteraction.on('drag')和dragInteraction.off('drag')接口函数添加接口权限校验。
647
648**变更影响**
649
650该变更为不兼容性变更,非系统应用不能调用dragInteraction.on('drag')和dragInteraction.off('drag')接口。
651
652**起始API Level**
653
65412
655
656**变更发生的版本**
657
658从OpenHarmony SDK 5.0.0.33开始。
659
660**变更的接口**
661
662on(type: 'drag', callback: Callback\<DragState>): void;
663off(type: 'drag', callback?: Callback\<DragState>): void;
664
665**适配指导**
666
667默认行为变更,无需适配。
668
669## cl.arkui.14 Scroll、List、Grid、WaterFlow组件scrollBarColor接口变更
670
671**访问级别**
672
673公开接口
674
675**变更原因**
676
677统一Scroll、List、Grid、WaterFlow组件scrollBarColor接口在设置负数时的行为。
678
679**变更影响**
680
681该变更为不兼容变更。
682
683变更前,Scroll组件scrollBarColor接口设置负数时按默认值0x66182431处理,List、Grid、WaterFlow组件scrollBarColor接口设置负数时按黑色0xFF000000处理。
684
685变更后,Scroll、List、Grid、WaterFlow组件scrollBarColor接口设置负数时按无符号整数对应的ARGB颜色处理。
686
687**起始API Level**
688
6897
690
691**变更发生版本**
692
693从OpenHarmony SDK 5.0.0.35开始。
694
695**变更的接口/组件**
696
697Scroll、List、Grid、WaterFlow组件scrollBarColor接口
698
699**适配指导**
700
701默认行为变更,无需适配。
702
703## cl.arkui.15 自定义MenuItem的onChange触发逻辑变更
704
705**访问级别**
706
707公开接口
708
709**变更原因**
710
711基于CustomBuilder创建的MenuItem,无法触发onChange事件。变更后事件触发符合预期。
712
713**变更影响**
714
715该变更为不兼容性变更。
716
717变更前:基于CustomBuilder创建的MenuItem,无法触发onChange事件。
718
719变更后:基于CustomBuilder创建的MenuItem,正常触发onChange事件。
720
721**起始API Level**
722
7239
724
725**变更发生版本**
726
727从OpenHarmony SDK 5.0.0.35开始。
728
729**变更的接口/组件**
730
731MenuItem组件。
732
733**适配指导**
734
735默认行为变更,无需适配。注意,由于此前基于CustomBuilder创建的MenuItem,设置onChange不生效,变更后请按应用场景正确使用onChange。
736
737## cl.arkui.16 手机横屏及其他设备,上下文菜单placement变更
738
739**访问级别**
740
741公开接口
742
743**变更原因**
744
745手机横屏及其他设备场景,布局计算未按照用户设置的placement进行,导致显示异常。变更后布局效果符合预期。
746
747**变更影响**
748
749该变更为不兼容性变更。
750
751变更前:手机横屏及其他设备,布局计算基于默认的Placement.BOTTOM_RIGHT进行,导致上下文菜单大小、位置异常。
752
753变更后:手机横屏及其他设备,布局计算基于用户设置的placement进行,当用户未设置placement时,使用默认的Placement.BOTTOM_RIGHT进行,最终布局效果符合预期。
754
755| 变更前 | 变更后 |
756|---------|---------|
757| ![变更前布局位置异常](figures/placement_before.PNG)       |  ![变更前布局符合预期](figures/placement_after.PNG) |
758
759**起始API Level**
760
7618
762
763**变更发生版本**
764
765从OpenHarmony SDK 5.0.0.35开始。
766
767**变更的接口/组件**
768
769.bindContextMenu的placement属性。
770
771**适配指导**
772
773默认行为变更,无需适配。
774
775## cl.arkui.17 Toggle/Switch按压反馈样式变更
776
777**访问级别**
778
779公开接口
780
781**变更原因**
782
783UX规范变更
784
785**变更影响**
786
787该变更为兼容性变更。
788
789变更前:Toggle/Switch有按压反馈,点击时会有按压效果。
790
791变更后:去除Toggle/Switch按压反馈,点击时无按压效果。
792
793| 变更前 | 变更后 |
794|---------|---------|
795| ![Toggle/Switch](figures/toggle_switch_press_before.png)| ![Toggle/Switch](figures/toggle_switch_press_after.png)|
796
797**起始API Level**
798
7998
800
801**变更发生版本**
802
803从OpenHarmony SDK 5.0.0.35开始。
804
805**适配指导**
806
807按压显示效果变化,无需适配。
808
809## cl.arkui.18 Contextmenu组件hoverScale接口过渡动效默认行为变更
810**访问级别**
811
812公开接口
813
814**变更原因**
815
816UX规格变更。
817
818**变更影响**
819
820该变更为不兼容变更。
821
822变更前:
8231. 需长按800ms后,组件截图做600ms缩放动效,然后切换自定义预览图, 切换时使用弹簧动效。
8242. hoverScale与scale接口组合使用时,整个动效流程生效的缩放动效的参数为 hoverScale From -> scaleFrom -> scaleTo。
8253. hoverScale动效过程中不支持打断动效。
8264. hoverScale动效过程中,组件截图与预览图切换时,组件截图和预览图做相反的透明度动效。
827
828变更后:
8291. 需长按250ms后,组件截图做200ms缩放动效,然后切换自定义预览图, 切换时弹簧动效速度较之前版本变快。
8302. hoverScale与scale接口组合使用时,整个动效流程生效的缩放动效的参数为 hoverScaleFrom -> hoverScaleTo -> scaleTo。
8313. hoverScale动效过程中,在组件截图缩放动效的200ms可以点击空白处取消动效,并以弹簧动效返回原始状态。
8324. hoverScale动效过程中,组件截图切换预览图时,组件截图不做透明度变化动效,仅预览图做透明度动效。
833
834| 变更前 | 变更后 |
835|---------|---------|
836| ![](figures/hoverScale_Before.gif)  |  ![](figures/hoverScale_After.gif)  |
837
838**起始API Level**
839
84012
841
842**变更发生版本**
843
844从OpenHarmony SDK 5.0.0.35开始。
845
846**变更的接口/组件**
847
848contextmenu的hoverScale接口
849
850**适配指导**
851
852默认行为变更,无需适配,但应注意变更后的行为是否对整体应用逻辑产生影响。
853
854## cl.arkui.19 删除systemapi的atomicService标签
855
856**访问级别**
857
858系统接口
859
860**变更原因**
861
862systemapi不支持在元服务中使用。
863
864**变更影响**
865
866该变更为不兼容变更。
867
868变更前:支持在元服务应用中使用,使用该接口IDE正确编译。
869
870变更后:不支持在元服务应用中使用,使用该接口会导致IDE编译报错。
871
872**起始API Level**
873
874API 12
875
876**变更发生版本**
877
878从OpenHarmony SDK 5.0.0.35开始。
879
880**变更的接口/组件**
881
882clearResourceCache、TransitionHierarchyStrategy、TransitionHierarchyStrategy枚举的NONE类型、
883TransitionHierarchyStrategy枚举的ADAPTIVE类型、GeometryTransitionOptions接口的hierarchyStrategy属性
884
885**适配指导**
886
887默认行为变更,无需适配。
888