1# arkui子系统ChangeLog 2 3## cl.arkui.1 Navigation标题自定义位置变更 4 51. NavigationTitleMode设置为Full、Free或者Mini不带返回键场景。 6 7 API Version 9:保持左边距 24vp。 8 9 API Version 10: 左边距发生更改,由24vp更改为0。上边距由居中显示更改为上边距0。 10 112. NavigationTitleMode设置为Mini并且显示返回键。 12 13 API Version 9: 自定义标题与返回键间距为16vp。 14 15 API Version 10: 自定义标题栏与返回键间距变更:16vp变更为12vp。 16 173. 自定义Menu场景。 18 19 API Version 9:右边距为24vp。 20 21 API Version 10: 右边距由24vp变更为0。 22 23**变更原因** 24 25从API Version 9开始,会对Navigation的自定义标题以及自定义Menu添加边距,影响开发者对自定义组件的使用。从4.0.10.6版本对该问题进行优化,针对API Version 10的应用去掉自定义标题标题和自定义Menu的偏移。 26 27**变更影响** 28 29该变更会导致API Version 10中使用Navigation自定义标题位置发生变化,显示会偏左和偏上。针对API Version 9及以下应用无影响。 30 31**适配方法** 32 331. 针对NavigationTitleMode.Full、Free模式以及NavigationTitleMode.Mini,添加左间距偏移:$r('sys.float.ohos_id_max_padding_start')。 34实现自定标题的居中效果: .height('100%').alignItems(VerticalAlign.Center) 35 362. 针对NavigationTitleMode设置为Mini模式,并且显示返回键场景: 添加左偏移:.margin({left: 4}),居中效果同上。 37 383. 针对自定义Menu适配:添加右边距配置: .margin({right: $r('sys.float.ohos_id_max_padding_end')}) 39 40 41**示例:** 42```ts 43@Entry 44@Component 45struct Index { 46 @State titleMode: NavigationTitleMode = NavigationTitleMode.Free 47 @State backButton: boolean = false; 48 @Builder CustomMenu() { 49 Column() { 50 Image($r('app.media.icon')).width(24).height(24) 51 } 52 } 53 54 @Builder CustomTitle() { 55 Column() { 56 Text('Custom title').fontSize(20) 57 } 58 } 59 60 build() { 61 Column() { 62 Navigation() { 63 Column() { 64 Text(`Change current title mode: ${this.titleMode}`) 65 .onClick(()=>{ 66 if (this.titleMode == NavigationTitleMode.Free) { 67 this.titleMode = NavigationTitleMode.Full; 68 } else if (this.titleMode == NavigationTitleMode.Full) { 69 this.titleMode = NavigationTitleMode.Mini; 70 } else { 71 this.titleMode = NavigationTitleMode.Free; 72 } 73 }) 74 75 Text(`Change back button: ${this.backButton}`).onClick(()=>{ 76 this.backButton = !this.backButton; 77 }).margin({top: 10}) 78 }.margin({top: 40}) 79 }.title(this.CustomTitle) 80 .titleMode(this.titleMode) 81 .menus(this.CustomMenu) 82 .hideBackButton(this.backButton) 83 } 84 } 85} 86``` 87API Version 9:NavigationTitleMode.Full自定义标题栏以及自定义Menu显示 88 89 90 91API Version 10: NavigationTitleMode.Full自定义标题栏以及自定义Menu显示 92 93 94 95API Version 9: NavigationTitleMode.Mini带返回键自定义标题栏显示 96 97 98 99API Version 10: NavigationTitleMode.Mini带返回键自定义标题栏显示 100 101 102 103API Version 9: NavigationTitleMode.Mini不带返回键标题栏显示 104 105 106 107API Version 10: NavigationTitleMode.Mini不带返回键标题栏显示 108 109 110 111## cl.arkui.2 NavDestination标题栏变更 112 113针对自定义标题: 114 1151. 带返回键场景。 116 117 API Version 9:返回键与标题栏间距为16vp,标题栏居中。 118 119 API Version 10:标题栏与返回键间距变更由16vp变更为12vp,标题栏上偏移该为0。 120 1212. 不带返回键场景。 122 123 API Version 9: 标题栏左间距为24vp,标题栏居中。 124 125 API Version 10:标题栏左间距变更24vp变更为0,标题栏上偏移该为0。 126 127**变更原因** 128 129从API Version 9开始,会对Navigation的自定义标题添加边距,影响开发者对自定义组件的使用。从4.0.10.6版本对该问题进行优化,针对API Version 10的应用去掉自定义标题标题的偏移。 130 131**变更影响** 132NavDestination自定义标题栏会移到左上 133 134**适配方法** 135 136应用如果要保持之前的显示效果,可以采用如下方案适配: 137 1381. 针对不带返回键的场景,添加左偏移: margin({left: $r('sys.float.ohos_id_max_padding_start')}), 139添加居中效果 .height('100%').alignItems(VerticalAlign.Center) 140 1412. 针对带返回键场景,添加做偏移:margin({left: 4}),居中实现效果同上。 142 143**示例:** 144```ts 145@Entry 146@Component 147struct Index { 148 @Builder NavigationTile() { 149 Column() { 150 Text('title').fontColor('#182431').fontSize(30).lineHeight(41) 151 Text('subTitle').fontColor('#182431').fontSize(14).lineHeight(19).margin(top:2, bottom: 20) 152 } 153 } 154 155 build() { 156 Column() { 157 Navigation() { 158 Text('Navigation') 159 }.title(this.NavigationTitle) 160 .titleMode(NavigationTitleMode.Free) 161 .menus([ 162 {icon: 'common/image/icon.png', value: 'menu1'} 163 ]) 164 } 165 } 166} 167``` 168 169API Version 9:带返回键自定义标题页面 170 171 172 173API Version 10: 带返回键自定义标题页面 174 175 176 177API9: 不带返回键自定义标题页面 178 179 180 181API10: 不带返回键自定义标题页面 182 183 184 185## cl.arkui.3 NavRouter回调OnStateChange变更 186 187OnStateChange调用次数修复: 188 189针对目标显示NavDestination的OnStateChange回调由调用2次,修复为调用1次,调用顺序不受影响。 190 191**变更影响** 192 193利用OnStateChange调用时序处理的应用会受到影响。 194 195 更改之前调用时序:目标显示NavRouter触发OnStateChange(true) -> 退出NavRouter触发OnStateChange(false) -> 目标显示NavRouter触发OnStateChange(true) 196 197 更改之后调用时序:目标显示NavRouter触发OnStateChange(true) -> 退出NavRouter触发OnStateChange(false)