1# Z序控制 2<!--Kit: ArkUI--> 3<!--Subsystem: ArkUI--> 4<!--Owner: @jiangtao92--> 5<!--Designer: @piggyguy--> 6<!--Tester: @songyanhong--> 7<!--Adviser: @HelloCrease--> 8 9组件的Z序,设置组件的堆叠顺序。 10 11> **说明:** 12> 13> 从API version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 14 15## zIndex 16 17zIndex(value: number): T 18 19设置组件的堆叠顺序。 20 21**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 22 23**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 24 25**系统能力:** SystemCapability.ArkUI.ArkUI.Full 26 27**参数:** 28 29| 参数名 | 类型 | 必填 | 说明 | 30| ------ | ------ | ---- | ------------------------------------------------------------ | 31| value | number | 是 | 同一容器中兄弟组件显示层级关系。zIndex值越大,显示层级越高,即zIndex值大的组件会覆盖在zIndex值小的组件上方。当不涉及新增或减少兄弟节点,动态改变zIndex时会在zIndex改变前层级顺序的基础上进行稳定排序。 | 32 33**返回值:** 34 35| 类型 | 说明 | 36| -------- | -------- | 37| T | 返回当前组件。 | 38 39## 示例 40 41### 示例1(设置组件堆叠顺序) 42 43该示例通过zIndex设置组件堆叠顺序。 44 45```ts 46// xxx.ets 47@Entry 48@Component 49struct ZIndexExample { 50 build() { 51 Column() { 52 Stack() { 53 // stack会重叠组件,默认后定义的在最上面,具有较高zIndex值的元素在zIndex较小的元素前面 54 Text('1, zIndex(2)') 55 .size({ width: '40%', height: '30%' }).backgroundColor(0xbbb2cb) 56 .zIndex(2) 57 Text('2, default zIndex(1)') 58 .size({ width: '70%', height: '50%' }).backgroundColor(0xd2cab3).align(Alignment.TopStart) 59 .zIndex(1) 60 Text('3, zIndex(0)') 61 .size({ width: '90%', height: '80%' }).backgroundColor(0xc1cbac).align(Alignment.TopStart) 62 .zIndex(0) 63 }.width('100%').height(200) 64 }.width('100%').height(200) 65 } 66} 67``` 68Stack容器内子组件不设置zIndex的效果。 69 70 71 72Stack容器子组件设置zIndex后的效果。 73 74 75 76### 示例2(动态修改zIndex属性) 77 78该示例使用Button组件动态修改zIndex属性。 79 80```ts 81// xxx.ets 82@Entry 83@Component 84struct ZIndexExample { 85 @State zIndex_ : number = 0 86 build() { 87 Column() { 88 // 点击Button改变zIndex后,在点击Button前的层级顺序上根据zIndex进行稳定排序。 89 Button("change Text2 zIndex") 90 .onClick(()=>{ 91 this.zIndex_ = (this.zIndex_ + 1) % 3; 92 }) 93 Stack() { 94 Text('1, zIndex(1)') 95 .size({ width: '70%', height: '50%' }).backgroundColor(0xd2cab3).align(Alignment.TopStart) 96 .zIndex(1) 97 Text('2, default zIndex(0), now zIndex:' + this.zIndex_) 98 .size({ width: '90%', height: '80%' }).backgroundColor(0xc1cbac).align(Alignment.TopStart) 99 .zIndex(this.zIndex_) 100 }.width('100%').height(200) 101 }.width('100%').height(200) 102 } 103} 104``` 105 106不点击Button修改zIndex值的效果。 107 108 109 110点击Button动态修改zIndex,使Text1和Text2的zIndex相等,因为在点击Button前的层级顺序上根据zIndex进行稳定排序,层级顺序不发生改变。 111 112 113 114点击Button动态修改zIndex,使Text2的zIndex大于Text1,层级顺序发生改变。 115 116