1# 弹性布局 (Flex) 2 3 4## 概述 5 6弹性布局([Flex](../reference/apis-arkui/arkui-ts/ts-container-flex.md))提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。常用于页面头部导航栏的均匀分布、页面框架的搭建、多行数据的排列等。 7 8容器默认存在主轴与交叉轴,子元素默认沿主轴排列,子元素在主轴方向的尺寸称为主轴尺寸,在交叉轴方向的尺寸称为交叉轴尺寸。 9 10 11 12 **图1** 主轴为水平方向的Flex容器示意图 13 14 15 16 17## 基本概念 18 19- 主轴:Flex组件布局方向的轴线,子元素默认沿着主轴排列。主轴开始的位置称为主轴起始点,结束位置称为主轴结束点。 20 21- 交叉轴:垂直于主轴方向的轴线。交叉轴开始的位置称为交叉轴起始点,结束位置称为交叉轴结束点。 22 23 24## 布局方向 25 26在弹性布局中,容器的子元素可以按照任意方向排列。通过设置参数direction,可以决定主轴的方向,从而控制子元素的排列方向。 27 28 **图2** 弹性布局方向图 29 30 31 32- FlexDirection.Row(默认值):主轴为水平方向,子元素从起始端沿着水平方向开始排布。 33 34 35 ```ts 36 Flex({ direction: FlexDirection.Row }) { 37 Text('1').width('33%').height(50).backgroundColor(0xF5DEB3) 38 Text('2').width('33%').height(50).backgroundColor(0xD2B48C) 39 Text('3').width('33%').height(50).backgroundColor(0xF5DEB3) 40 } 41 .height(70) 42 .width('90%') 43 .padding(10) 44 .backgroundColor(0xAFEEEE) 45 ``` 46 47  48 49- FlexDirection.RowReverse:主轴为水平方向,子元素从终点端沿着FlexDirection. Row相反的方向开始排布。 50 51 52 ```ts 53 Flex({ direction: FlexDirection.RowReverse }) { 54 Text('1').width('33%').height(50).backgroundColor(0xF5DEB3) 55 Text('2').width('33%').height(50).backgroundColor(0xD2B48C) 56 Text('3').width('33%').height(50).backgroundColor(0xF5DEB3) 57 } 58 .height(70) 59 .width('90%') 60 .padding(10) 61 .backgroundColor(0xAFEEEE) 62 ``` 63 64  65 66- FlexDirection.Column:主轴为垂直方向,子元素从起始端沿着垂直方向开始排布。 67 68 69 ```ts 70 Flex({ direction: FlexDirection.Column }) { 71 Text('1').width('100%').height(50).backgroundColor(0xF5DEB3) 72 Text('2').width('100%').height(50).backgroundColor(0xD2B48C) 73 Text('3').width('100%').height(50).backgroundColor(0xF5DEB3) 74 } 75 .height(70) 76 .width('90%') 77 .padding(10) 78 .backgroundColor(0xAFEEEE) 79 ``` 80 81  82 83- FlexDirection.ColumnReverse:主轴为垂直方向,子元素从终点端沿着FlexDirection. Column相反的方向开始排布。 84 85 86 ```ts 87 Flex({ direction: FlexDirection.ColumnReverse }) { 88 Text('1').width('100%').height(50).backgroundColor(0xF5DEB3) 89 Text('2').width('100%').height(50).backgroundColor(0xD2B48C) 90 Text('3').width('100%').height(50).backgroundColor(0xF5DEB3) 91 } 92 .height(70) 93 .width('90%') 94 .padding(10) 95 .backgroundColor(0xAFEEEE) 96 ``` 97 98  99 100 101## 布局换行 102 103弹性布局分为单行布局和多行布局。默认情况下,Flex容器中的子元素都排在一条线(又称“轴线”)上。wrap属性控制当子元素主轴尺寸之和大于容器主轴尺寸时,Flex是单行布局还是多行布局。在多行布局时,通过交叉轴方向,确认新行排列方向。 104 105- FlexWrap. NoWrap(默认值):不换行。如果子元素的宽度总和大于父元素的宽度,则子元素会被压缩宽度。 106 107 108 ```ts 109 Flex({ wrap: FlexWrap.NoWrap }) { 110 Text('1').width('50%').height(50).backgroundColor(0xF5DEB3) 111 Text('2').width('50%').height(50).backgroundColor(0xD2B48C) 112 Text('3').width('50%').height(50).backgroundColor(0xF5DEB3) 113 } 114 .width('90%') 115 .padding(10) 116 .backgroundColor(0xAFEEEE) 117 ``` 118 119  120 121- FlexWrap. Wrap:换行,每一行子元素按照主轴方向排列。 122 123 124 ```ts 125 Flex({ wrap: FlexWrap.Wrap }) { 126 Text('1').width('50%').height(50).backgroundColor(0xF5DEB3) 127 Text('2').width('50%').height(50).backgroundColor(0xD2B48C) 128 Text('3').width('50%').height(50).backgroundColor(0xD2B48C) 129 } 130 .width('90%') 131 .padding(10) 132 .backgroundColor(0xAFEEEE) 133 ``` 134 135  136 137- FlexWrap. WrapReverse:换行,每一行子元素按照主轴反方向排列。 138 139 140 ```ts 141 Flex({ wrap: FlexWrap.WrapReverse}) { 142 Text('1').width('50%').height(50).backgroundColor(0xF5DEB3) 143 Text('2').width('50%').height(50).backgroundColor(0xD2B48C) 144 Text('3').width('50%').height(50).backgroundColor(0xF5DEB3) 145 } 146 .width('90%') 147 .padding(10) 148 .backgroundColor(0xAFEEEE) 149 ``` 150 151  152 153 154## 主轴对齐方式 155 156通过justifyContent参数设置子元素在主轴方向的对齐方式。 157 158 159 160 161- FlexAlign.Start(默认值):子元素在主轴方向起始端对齐, 第一个子元素与父元素边沿对齐,其他元素与前一个元素对齐。 162 163 164 ```ts 165 let PTopBottom:Record<string,number> = { 'top': 10, 'bottom': 10 } 166 Flex({ justifyContent: FlexAlign.Start }) { 167 Text('1').width('20%').height(50).backgroundColor(0xF5DEB3) 168 Text('2').width('20%').height(50).backgroundColor(0xD2B48C) 169 Text('3').width('20%').height(50).backgroundColor(0xF5DEB3) 170 } 171 .width('90%') 172 .padding(PTopBottom) 173 .backgroundColor(0xAFEEEE) 174 ``` 175 176  177 178- FlexAlign.Center:子元素在主轴方向居中对齐。 179 180 181 ```ts 182 let PTopBottom:Record<string,number> = { 'top': 10, 'bottom': 10 } 183 Flex({ justifyContent: FlexAlign.Center }) { 184 Text('1').width('20%').height(50).backgroundColor(0xF5DEB3) 185 Text('2').width('20%').height(50).backgroundColor(0xD2B48C) 186 Text('3').width('20%').height(50).backgroundColor(0xF5DEB3) 187 } 188 .width('90%') 189 .padding(PTopBottom) 190 .backgroundColor(0xAFEEEE) 191 ``` 192 193  194 195- FlexAlign.End:子元素在主轴方向终点端对齐, 最后一个子元素与父元素边沿对齐,其他元素与后一个元素对齐。 196 197 198 ```ts 199 let PTopBottom:Record<string,number> = { 'top': 10, 'bottom': 10 } 200 Flex({ justifyContent: FlexAlign.End }) { 201 Text('1').width('20%').height(50).backgroundColor(0xF5DEB3) 202 Text('2').width('20%').height(50).backgroundColor(0xD2B48C) 203 Text('3').width('20%').height(50).backgroundColor(0xF5DEB3) 204 } 205 .width('90%') 206 .padding(PTopBottom) 207 .backgroundColor(0xAFEEEE) 208 ``` 209 210  211 212- FlexAlign.SpaceBetween:Flex主轴方向均匀分配弹性元素,相邻子元素之间距离相同。第一个子元素和最后一个子元素与父元素边沿对齐。 213 214 215 ```ts 216 let PTopBottom1:Record<string,number> = { 'top': 10, 'bottom': 10 } 217 Flex({ justifyContent: FlexAlign.SpaceBetween }) { 218 Text('1').width('20%').height(50).backgroundColor(0xF5DEB3) 219 Text('2').width('20%').height(50).backgroundColor(0xD2B48C) 220 Text('3').width('20%').height(50).backgroundColor(0xF5DEB3) 221 } 222 .width('90%') 223 .padding(PTopBottom1) 224 .backgroundColor(0xAFEEEE) 225 ``` 226 227  228 229- FlexAlign.SpaceAround:Flex主轴方向均匀分配弹性元素,相邻子元素之间距离相同。第一个子元素到主轴起始端的距离和最后一个子元素到主轴终点端的距离是相邻元素之间距离的一半。 230 231 232 ```ts 233 let PTopBottom:Record<string,number> = { 'top': 10, 'bottom': 10 } 234 Flex({ justifyContent: FlexAlign.SpaceAround }) { 235 Text('1').width('20%').height(50).backgroundColor(0xF5DEB3) 236 Text('2').width('20%').height(50).backgroundColor(0xD2B48C) 237 Text('3').width('20%').height(50).backgroundColor(0xF5DEB3) 238 } 239 .width('90%') 240 .padding(PTopBottom) 241 .backgroundColor(0xAFEEEE) 242 ``` 243 244  245 246- FlexAlign.SpaceEvenly:Flex主轴方向元素等间距布局,相邻子元素之间的间距、第一个子元素与主轴起始端的间距、最后一个子元素到主轴终点端的间距均相等。 247 248 249 ```ts 250 let PTopBottom:Record<string,number> = { 'top': 10, 'bottom': 10 } 251 Flex({ justifyContent: FlexAlign.SpaceEvenly }) { 252 Text('1').width('20%').height(50).backgroundColor(0xF5DEB3) 253 Text('2').width('20%').height(50).backgroundColor(0xD2B48C) 254 Text('3').width('20%').height(50).backgroundColor(0xF5DEB3) 255 } 256 .width('90%') 257 .padding(PTopBottom) 258 .backgroundColor(0xAFEEEE) 259 ``` 260 261  262 263 264## 交叉轴对齐方式 265 266容器和子元素都可以设置交叉轴对齐方式,且子元素设置的对齐方式优先级较高。 267 268 269### 容器组件设置交叉轴对齐 270 271可以通过Flex组件的alignItems参数设置子元素在交叉轴的对齐方式。 272 273 274- ItemAlign.Auto:使用Flex容器中默认配置。 275 276 277 ```ts 278 let SWh:Record<string,number|string> = { 'width': '90%', 'height': 80 } 279 Flex({ alignItems: ItemAlign.Auto }) { 280 Text('1').width('33%').height(30).backgroundColor(0xF5DEB3) 281 Text('2').width('33%').height(40).backgroundColor(0xD2B48C) 282 Text('3').width('33%').height(50).backgroundColor(0xF5DEB3) 283 } 284 .size(SWh) 285 .padding(10) 286 .backgroundColor(0xAFEEEE) 287 ``` 288 289  290 291- ItemAlign.Start:交叉轴方向首部对齐。 292 293 294 ```ts 295 let SWh:Record<string,number|string> = { 'width': '90%', 'height': 80 } 296 Flex({ alignItems: ItemAlign.Start }) { 297 Text('1').width('33%').height(30).backgroundColor(0xF5DEB3) 298 Text('2').width('33%').height(40).backgroundColor(0xD2B48C) 299 Text('3').width('33%').height(50).backgroundColor(0xF5DEB3) 300 } 301 .size(SWh) 302 .padding(10) 303 .backgroundColor(0xAFEEEE) 304 ``` 305 306  307 308- ItemAlign.Center:交叉轴方向居中对齐。 309 310 311 ```ts 312 let SWh:Record<string,number|string> = { 'width': '90%', 'height': 80 } 313 Flex({ alignItems: ItemAlign.Center }) { 314 Text('1').width('33%').height(30).backgroundColor(0xF5DEB3) 315 Text('2').width('33%').height(40).backgroundColor(0xD2B48C) 316 Text('3').width('33%').height(50).backgroundColor(0xF5DEB3) 317 } 318 .size(SWh) 319 .padding(10) 320 .backgroundColor(0xAFEEEE) 321 ``` 322 323  324 325- ItemAlign.End:交叉轴方向底部对齐。 326 327 328 ```ts 329 let SWh:Record<string,number|string> = { 'width': '90%', 'height': 80 } 330 Flex({ alignItems: ItemAlign.End }) { 331 Text('1').width('33%').height(30).backgroundColor(0xF5DEB3) 332 Text('2').width('33%').height(40).backgroundColor(0xD2B48C) 333 Text('3').width('33%').height(50).backgroundColor(0xF5DEB3) 334 } 335 .size(SWh) 336 .padding(10) 337 .backgroundColor(0xAFEEEE) 338 ``` 339 340  341 342- ItemAlign.Stretch:交叉轴方向拉伸填充,在未设置尺寸时,拉伸到容器尺寸。 343 344 345 ```ts 346 let SWh:Record<string,number|string> = { 'width': '90%', 'height': 80 } 347 Flex({ alignItems: ItemAlign.Stretch }) { 348 Text('1').width('33%').backgroundColor(0xF5DEB3) 349 Text('2').width('33%').backgroundColor(0xD2B48C) 350 Text('3').width('33%').backgroundColor(0xF5DEB3) 351 } 352 .size(SWh) 353 .padding(10) 354 .backgroundColor(0xAFEEEE) 355 ``` 356 357  358 359- ItemAlign. Baseline:交叉轴方向文本基线对齐。 360 361 362 ```ts 363 let SWh:Record<string,number|string> = { 'width': '90%', 'height': 80 } 364 Flex({ alignItems: ItemAlign.Baseline }) { 365 Text('1').width('33%').height(30).backgroundColor(0xF5DEB3) 366 Text('2').width('33%').height(40).backgroundColor(0xD2B48C) 367 Text('3').width('33%').height(50).backgroundColor(0xF5DEB3) 368 } 369 .size(SWh) 370 .padding(10) 371 .backgroundColor(0xAFEEEE) 372 ``` 373 374  375 376 377### 子元素设置交叉轴对齐 378 379子元素的[alignSelf](../reference/apis-arkui/arkui-ts/ts-universal-attributes-flex-layout.md#alignself)属性也可以设置子元素在父容器交叉轴的对齐格式,且会覆盖Flex布局容器中alignItems配置。如下例所示: 380 381```ts 382Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center }) { // 容器组件设置子元素居中 383 Text('alignSelf Start').width('25%').height(80) 384 .alignSelf(ItemAlign.Start) 385 .backgroundColor(0xF5DEB3) 386 Text('alignSelf Baseline') 387 .alignSelf(ItemAlign.Baseline) 388 .width('25%') 389 .height(80) 390 .backgroundColor(0xD2B48C) 391 Text('alignSelf Baseline').width('25%').height(100) 392 .backgroundColor(0xF5DEB3) 393 .alignSelf(ItemAlign.Baseline) 394 Text('no alignSelf').width('25%').height(100) 395 .backgroundColor(0xD2B48C) 396 Text('no alignSelf').width('25%').height(100) 397 .backgroundColor(0xF5DEB3) 398 399}.width('90%').height(220).backgroundColor(0xAFEEEE) 400``` 401 402 403 404 405 406上例中,Flex容器中alignItems设置交叉轴子元素的对齐方式为居中,子元素自身设置了alignSelf属性的情况,覆盖父组件的alignItems值,表现为alignSelf的定义。 407 408 409### 内容对齐 410 411可以通过[alignContent](../reference/apis-arkui/arkui-ts/ts-container-flex.md#接口)参数设置子元素各行在交叉轴剩余空间内的对齐方式,只在多行的Flex布局中生效,可选值有: 412 413- FlexAlign.Start:子元素各行与交叉轴起点对齐。 414 415 416 ```ts 417 Flex({ justifyContent: FlexAlign.SpaceBetween, wrap: FlexWrap.Wrap, alignContent: FlexAlign.Start }) { 418 Text('1').width('30%').height(20).backgroundColor(0xF5DEB3) 419 Text('2').width('60%').height(20).backgroundColor(0xD2B48C) 420 Text('3').width('40%').height(20).backgroundColor(0xD2B48C) 421 Text('4').width('30%').height(20).backgroundColor(0xF5DEB3) 422 Text('5').width('20%').height(20).backgroundColor(0xD2B48C) 423 } 424 .width('90%') 425 .height(100) 426 .backgroundColor(0xAFEEEE) 427 ``` 428 429  430 431- FlexAlign.Center:子元素各行在交叉轴方向居中对齐。 432 433 434 ```ts 435 Flex({ justifyContent: FlexAlign.SpaceBetween, wrap: FlexWrap.Wrap, alignContent: FlexAlign.Center }) { 436 Text('1').width('30%').height(20).backgroundColor(0xF5DEB3) 437 Text('2').width('60%').height(20).backgroundColor(0xD2B48C) 438 Text('3').width('40%').height(20).backgroundColor(0xD2B48C) 439 Text('4').width('30%').height(20).backgroundColor(0xF5DEB3) 440 Text('5').width('20%').height(20).backgroundColor(0xD2B48C) 441 } 442 .width('90%') 443 .height(100) 444 .backgroundColor(0xAFEEEE) 445 ``` 446 447  448 449- FlexAlign.End:子元素各行与交叉轴终点对齐。 450 451 452 ```ts 453 Flex({ justifyContent: FlexAlign.SpaceBetween, wrap: FlexWrap.Wrap, alignContent: FlexAlign.End }) { 454 Text('1').width('30%').height(20).backgroundColor(0xF5DEB3) 455 Text('2').width('60%').height(20).backgroundColor(0xD2B48C) 456 Text('3').width('40%').height(20).backgroundColor(0xD2B48C) 457 Text('4').width('30%').height(20).backgroundColor(0xF5DEB3) 458 Text('5').width('20%').height(20).backgroundColor(0xD2B48C) 459 } 460 .width('90%') 461 .height(100) 462 .backgroundColor(0xAFEEEE) 463 ``` 464 465  466 467- FlexAlign.SpaceBetween:子元素各行与交叉轴两端对齐,各行间垂直间距平均分布。 468 469 470 ```ts 471 Flex({ justifyContent: FlexAlign.SpaceBetween, wrap: FlexWrap.Wrap, alignContent: FlexAlign.SpaceBetween }) { 472 Text('1').width('30%').height(20).backgroundColor(0xF5DEB3) 473 Text('2').width('60%').height(20).backgroundColor(0xD2B48C) 474 Text('3').width('40%').height(20).backgroundColor(0xD2B48C) 475 Text('4').width('30%').height(20).backgroundColor(0xF5DEB3) 476 Text('5').width('20%').height(20).backgroundColor(0xD2B48C) 477 } 478 .width('90%') 479 .height(100) 480 .backgroundColor(0xAFEEEE) 481 ``` 482 483  484 485- FlexAlign.SpaceAround:子元素各行间距相等,是元素首尾行与交叉轴两端距离的两倍。 486 487 488 ```ts 489 Flex({ justifyContent: FlexAlign.SpaceBetween, wrap: FlexWrap.Wrap, alignContent: FlexAlign.SpaceAround }) { 490 Text('1').width('30%').height(20).backgroundColor(0xF5DEB3) 491 Text('2').width('60%').height(20).backgroundColor(0xD2B48C) 492 Text('3').width('40%').height(20).backgroundColor(0xD2B48C) 493 Text('4').width('30%').height(20).backgroundColor(0xF5DEB3) 494 Text('5').width('20%').height(20).backgroundColor(0xD2B48C) 495 } 496 .width('90%') 497 .height(100) 498 .backgroundColor(0xAFEEEE) 499 ``` 500 501  502 503- FlexAlign.SpaceEvenly: 子元素各行间距,子元素首尾行与交叉轴两端距离都相等。 504 505 506 ```ts 507 Flex({ justifyContent: FlexAlign.SpaceBetween, wrap: FlexWrap.Wrap, alignContent: FlexAlign.SpaceEvenly }) { 508 Text('1').width('30%').height(20).backgroundColor(0xF5DEB3) 509 Text('2').width('60%').height(20).backgroundColor(0xD2B48C) 510 Text('3').width('40%').height(20).backgroundColor(0xD2B48C) 511 Text('4').width('30%').height(20).backgroundColor(0xF5DEB3) 512 Text('5').width('20%').height(20).backgroundColor(0xD2B48C) 513 } 514 .width('90%') 515 .height(100) 516 .backgroundColor(0xAFEEEE) 517 ``` 518 519  520 521 522## 自适应拉伸 523 524在弹性布局父组件尺寸过小时,通过子元素的以下属性设置其在父容器的占比,达到自适应布局。 525 526- [flexBasis](../reference/apis-arkui/arkui-ts/ts-universal-attributes-flex-layout.md#flexbasis):设置子元素在父容器主轴方向上的基准尺寸。如果设置了该属性,则子项占用的空间为该属性所设置的值;如果没设置该属性,那子项的空间为width/height的值。 527 528 529 ```ts 530 Flex() { 531 Text('flexBasis("auto")') 532 .flexBasis('auto') // 未设置width以及flexBasis值为auto,内容自身宽度 533 .height(100) 534 .backgroundColor(0xF5DEB3) 535 Text('flexBasis("auto")'+' width("40%")') 536 .width('40%') 537 .flexBasis('auto') //设置width以及flexBasis值auto,使用width的值 538 .height(100) 539 .backgroundColor(0xD2B48C) 540 541 Text('flexBasis(100)') // 未设置width以及flexBasis值为100,宽度为100vp 542 .flexBasis(100) 543 .height(100) 544 .backgroundColor(0xF5DEB3) 545 546 Text('flexBasis(100)') 547 .flexBasis(100) 548 .width(200) // flexBasis值为100,覆盖width的设置值,宽度为100vp 549 .height(100) 550 .backgroundColor(0xD2B48C) 551 }.width('90%').height(120).padding(10).backgroundColor(0xAFEEEE) 552 ``` 553 554  555 556- [flexGrow](../reference/apis-arkui//arkui-ts/ts-universal-attributes-flex-layout.md#flexgrow):设置父容器的剩余空间分配给此属性所在组件的比例。用于分配父组件的剩余空间。 557 558 ```ts 559 Flex() { 560 Text('flexGrow(2)') 561 .flexGrow(2) 562 .width(100) 563 .height(100) 564 .backgroundColor(0xF5DEB3) 565 Text('flexGrow(3)') 566 .flexGrow(3) 567 .width(100) 568 .height(100) 569 .backgroundColor(0xD2B48C) 570 571 Text('no flexGrow') 572 .width(100) 573 .height(100) 574 .backgroundColor(0xF5DEB3) 575 }.width(420).height(120).padding(10).backgroundColor(0xAFEEEE) 576 ``` 577 578  579 580 父容器宽度420vp,三个子元素原始宽度为100vp,左右padding为20vp,总和320vp,剩余空间100vp根据flexGrow值的占比分配给子元素,未设置flexGrow的子元素不参与“瓜分”。 581 582 第一个元素以及第二个元素以2:3分配剩下的100vp。第一个元素为100vp+100vp * 2/5=140vp,第二个元素为100vp+100vp * 3/5=160vp。 583 584- [flexShrink](../reference/apis-arkui/arkui-ts/ts-universal-attributes-flex-layout.md#flexshrink): 当父容器空间不足时,子元素的压缩比例。 585 586 587 ```ts 588 Flex({ direction: FlexDirection.Row }) { 589 Text('flexShrink(3)') 590 .flexShrink(3) 591 .width(200) 592 .height(100) 593 .backgroundColor(0xF5DEB3) 594 595 Text('no flexShrink') 596 .width(200) 597 .height(100) 598 .backgroundColor(0xD2B48C) 599 600 Text('flexShrink(2)') 601 .flexShrink(2) 602 .width(200) 603 .height(100) 604 .backgroundColor(0xF5DEB3) 605 }.width(400).height(120).padding(10).backgroundColor(0xAFEEEE) 606 ``` 607 608  609 610 611## 场景示例 612 613使用弹性布局,可以实现子元素沿水平方向排列,两端对齐,子元素间距平分,垂直方向上子元素居中的效果。 614 615 616```ts 617@Entry 618@Component 619struct FlexExample { 620 build() { 621 Column() { 622 Column({ space: 5 }) { 623 Flex({ direction: FlexDirection.Row, wrap: FlexWrap.NoWrap, justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { 624 Text('1').width('30%').height(50).backgroundColor(0xF5DEB3) 625 Text('2').width('30%').height(50).backgroundColor(0xD2B48C) 626 Text('3').width('30%').height(50).backgroundColor(0xF5DEB3) 627 } 628 .height(70) 629 .width('90%') 630 .backgroundColor(0xAFEEEE) 631 }.width('100%').margin({ top: 5 }) 632 }.width('100%') 633 } 634} 635``` 636 637 638 639## 相关实例 640 641针对Flex开发,有以下相关实例可供参考: 642 643- [弹性布局(ArkTS)(API9)](https://gitee.com/openharmony/codelabs/tree/master/ETSUI/FlexLayout)