1# 多态样式 2 3设置组件不同状态下的样式。 4 5> **说明:** 6> 7> 从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 8 9 10## 属性 11 12| 名称 | 参数类型 | 描述 | 13| -------- | -------- | -------- | 14| stateStyles | StateStyles | 设置组件不同状态的样式。<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。 | 15 16## StateStyles接口说明 17 18从API version 9开始,该接口支持在ArkTS卡片中使用。 19 20| 名称 | 类型 | 必填 | 描述 | 21| -------- | -------- | -------- | -------- | 22| normal | ()=>void | 否 | 组件无状态时的样式。 | 23| pressed | ()=>void | 否 | 组件按下状态的样式。 | 24| disabled | ()=>void | 否 | 组件禁用状态的样式。 | 25| focused | ()=>void | 否 | 组件获焦状态的样式。 | 26| clicked | ()=>void | 否 | 组件点击状态的样式。 | 27 28 29## 示例 30 31```ts 32// xxx.ets 33@Entry 34@Component 35struct StyleExample { 36 @State isEnable: boolean = true 37 38 @Styles pressedStyles() { 39 .backgroundColor("#ED6F21") 40 .borderRadius(10) 41 .borderStyle(BorderStyle.Dashed) 42 .borderWidth(2) 43 .borderColor("#33000000") 44 .width(120) 45 .height(30) 46 .opacity(1) 47 } 48 49 @Styles disabledStyles() { 50 .backgroundColor("#E5E5E5") 51 .borderRadius(10) 52 .borderStyle(BorderStyle.Solid) 53 .borderWidth(2) 54 .borderColor("#2a4c1919") 55 .width(90) 56 .height(25) 57 .opacity(1) 58 } 59 60 @Styles normalStyles() { 61 .backgroundColor("#0A59F7") 62 .borderRadius(10) 63 .borderStyle(BorderStyle.Solid) 64 .borderWidth(2) 65 .borderColor("#33000000") 66 .width(100) 67 .height(25) 68 .opacity(1) 69 } 70 71 build() { 72 Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center }) { 73 Text("normal") 74 .fontSize(14) 75 .fontColor(Color.White) 76 .opacity(0.5) 77 .stateStyles({ 78 normal: this.normalStyles, 79 }) 80 .margin({ bottom: 20 }) 81 .textAlign(TextAlign.Center) 82 Text("pressed") 83 .backgroundColor("#0A59F7") 84 .borderRadius(20) 85 .borderStyle(BorderStyle.Dotted) 86 .borderWidth(2) 87 .borderColor(Color.Red) 88 .width(100) 89 .height(25) 90 .opacity(1) 91 .fontSize(14) 92 .fontColor(Color.White) 93 .stateStyles({ 94 pressed: this.pressedStyles, 95 }) 96 .margin({ bottom: 20 }) 97 .textAlign(TextAlign.Center) 98 Text(this.isEnable == true ? "effective" : "disabled") 99 .backgroundColor("#0A59F7") 100 .borderRadius(20) 101 .borderStyle(BorderStyle.Solid) 102 .borderWidth(2) 103 .borderColor(Color.Gray) 104 .width(100) 105 .height(25) 106 .opacity(1) 107 .fontSize(14) 108 .fontColor(Color.White) 109 .enabled(this.isEnable) 110 .stateStyles({ 111 disabled: this.disabledStyles, 112 }) 113 .textAlign(TextAlign.Center) 114 Text("control disabled") 115 .onClick(() => { 116 this.isEnable = !this.isEnable 117 console.log(`${this.isEnable}`) 118 }) 119 } 120 .width(350).height(300) 121 } 122} 123``` 124 125![zh-cn_image_0000001188742468](figures/zh-cn_image_0000001188742468.gif) 126