changelogs-arkui.md 6.2 KB
Newer Older
T
tsj_2020 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# arkui子系统ChangeLog

## cl.arkui.1 Navigation标题自定义位置变更

1. NavigationTitleMode设置为Full、Free或者Mini不带返回键场景。

   API Version 9:保持左边距 24vp。

   API Version 10: 左边距发生更改,由24vp更改为0。上边距由居中显示更改为上边距0。

2. NavigationTitleMode设置为Mini并且显示返回键。

   API Version 9: 自定义标题与返回键间距为16vp。

   API Version 10: 自定义标题栏与返回键间距变更:16vp变更为12vp。

3. 自定义Menu场景。

   API Version 9:右边距为24vp。

   API Version 10: 右边距由24vp变更为0。

T
tsj_2020 已提交
23 24 25 26
**变更原因**

从API Version 9开始,会对Navigation的自定义标题以及自定义Menu添加边距,影响开发者对自定义组件的使用。从4.0.10.6版本对该问题进行优化,针对API Version 10的应用去掉自定义标题标题和自定义Menu的偏移。

T
tsj_2020 已提交
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
**变更影响**

该变更会导致API Version 10中使用Navigation自定义标题位置发生变化,显示会偏左和偏上。针对API Version 9及以下应用无影响。

**适配方法**

1. 针对NavigationTitleMode.Full、Free模式以及NavigationTitleMode.Mini,添加左间距偏移:$r('sys.float.ohos_id_max_padding_start')。
实现自定标题的居中效果: .height('100%').alignItems(VerticalAlign.Center)

2. 针对NavigationTitleMode设置为Mini模式,并且显示返回键场景: 添加左偏移:.margin({left: 4}),居中效果同上。

3. 针对自定义Menu适配:添加右边距配置: .margin({right: $r('sys.float.ohos_id_max_padding_end')})


**示例:**
```ts
@Entry
@Component
struct Index {
  @State titleMode: NavigationTitleMode = NavigationTitleMode.Free
  @State backButton: boolean = false;
  @Builder CustomMenu() {
    Column() {
      Image($r('app.media.icon')).width(24).height(24)
    }
  }

  @Builder CustomTitle() {
    Column() {
      Text('Custom title').fontSize(20)
    }
  }

  build() {
    Column() {
      Navigation() {
        Column() {
          Text(`Change current title mode: ${this.titleMode}`)
            .onClick(()=>{
              if (this.titleMode == NavigationTitleMode.Free) {
                this.titleMode = NavigationTitleMode.Full;
              } else if (this.titleMode == NavigationTitleMode.Full) {
                this.titleMode = NavigationTitleMode.Mini;
              } else {
                this.titleMode = NavigationTitleMode.Free;
              }
            })

          Text(`Change back button: ${this.backButton}`).onClick(()=>{
            this.backButton = !this.backButton;
          }).margin({top: 10})
        }.margin({top: 40})
      }.title(this.CustomTitle)
      .titleMode(this.titleMode)
      .menus(this.CustomMenu)
      .hideBackButton(this.backButton)
    }
  }
}
```
API Version 9:NavigationTitleMode.Full自定义标题栏以及自定义Menu显示

![Navigation](figures/navigation_full_title_sdk9.png)

API Version 10: NavigationTitleMode.Full自定义标题栏以及自定义Menu显示

![Navigation](figures/navigation_full_title_sdk10.png)

API Version 9: NavigationTitleMode.Mini带返回键自定义标题栏显示

![Navigation](figures/navigation_mini_title_sdk9.png)

API Version 10: NavigationTitleMode.Mini带返回键自定义标题栏显示

![Navigation](figures/navigation_mini_title_sdk10.png)

API Version 9: NavigationTitleMode.Mini不带返回键标题栏显示

![Navigation](figures/navigation_mini_title_no_back_sdk9.png)

API Version 10: NavigationTitleMode.Mini不带返回键标题栏显示

![Navigation](figures/navigation_mini_title_no_back_sdk10.png)

## cl.arkui.2 NavDestination标题栏变更

针对自定义标题:

1. 带返回键场景。

   API Version 9:返回键与标题栏间距为16vp,标题栏居中。

   API Version 10:标题栏与返回键间距变更由16vp变更为12vp,标题栏上偏移该为0。

2. 不带返回键场景。

   API Version 9: 标题栏左间距为24vp,标题栏居中。

   API Version 10:标题栏左间距变更24vp变更为0,标题栏上偏移该为0。

T
tsj_2020 已提交
127 128 129 130
**变更原因**

从API Version 9开始,会对Navigation的自定义标题添加边距,影响开发者对自定义组件的使用。从4.0.10.6版本对该问题进行优化,针对API Version 10的应用去掉自定义标题标题的偏移。

T
tsj_2020 已提交
131
**变更影响**
T
tsj_2020 已提交
132
NavDestination自定义标题栏会移到左上
T
tsj_2020 已提交
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197

**适配方法**

应用如果要保持之前的显示效果,可以采用如下方案适配:

1. 针对不带返回键的场景,添加左偏移: margin({left: $r('sys.float.ohos_id_max_padding_start')}),
添加居中效果 .height('100%').alignItems(VerticalAlign.Center)

2. 针对带返回键场景,添加做偏移:margin({left: 4}),居中实现效果同上。

**示例:**
```ts
@Entry
@Component
struct Index {
  @Builder NavigationTile() {
    Column() {
      Text('title').fontColor('#182431').fontSize(30).lineHeight(41)
      Text('subTitle').fontColor('#182431').fontSize(14).lineHeight(19).margin(top:2, bottom: 20)
    }
  }

  build() {
    Column() {
      Navigation() {
        Text('Navigation')
      }.title(this.NavigationTitle)
       .titleMode(NavigationTitleMode.Free)
       .menus([
        {icon: 'common/image/icon.png', value: 'menu1'}
       ])
    }
  }
}
```

API Version 9:带返回键自定义标题页面

![NavDstination](figures/navdestination_back_sdk9.png)

API Version 10: 带返回键自定义标题页面

![NavDestination](figures/navdestination_back_sdk10.png)

API9: 不带返回键自定义标题页面

![NavDestination](figures/navdestination_no_back_sdk9.png)

API10: 不带返回键自定义标题页面

![NavDestination](figures/navdestination_no_back_sdk10.png)

## cl.arkui.3 NavRouter回调OnStateChange变更

OnStateChange调用次数修复:

针对目标显示NavDestination的OnStateChange回调由调用2次,修复为调用1次,调用顺序不受影响。

**变更影响**

利用OnStateChange调用时序处理的应用会受到影响。

   更改之前调用时序:目标显示NavRouter触发OnStateChange(true) -> 退出NavRouter触发OnStateChange(false) -> 目标显示Navrouter触发OnStateChange(true)

   更改之后调用时序:目标显示NavRouter触发OnStateChange(true) -> 退出NavRouter触发OnStateChange(false)