1e41f4b71Sopenharmony_ci# Toggle 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci组件提供勾选框样式、状态按钮样式及开关样式。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **说明:** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci## 子组件 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci仅当ToggleType为Button时可包含子组件。 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci## 接口 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ciToggle(options: ToggleOptions) 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 23e41f4b71Sopenharmony_ci 24e41f4b71Sopenharmony_ci**参数:** 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 27e41f4b71Sopenharmony_ci| ---- | ---------- | -----| -------------- | 28e41f4b71Sopenharmony_ci| options | [ToggleOptions](#toggleoptions13对象说明) | 是 | Toggle的信息。 | 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci## ToggleOptions<sup>13+</sup>对象说明 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci**卡片能力:** 从API version 13开始,该接口支持在ArkTS卡片中使用。 33e41f4b71Sopenharmony_ci 34e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 37e41f4b71Sopenharmony_ci 38e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 39e41f4b71Sopenharmony_ci| ---- | --------------------------------- | ---- | ------------------------------------------------------------ | 40e41f4b71Sopenharmony_ci| type | [ToggleType](#toggletype枚举说明) | 是 | 开关的样式。<br/>默认值:ToggleType.Switch | 41e41f4b71Sopenharmony_ci| isOn | boolean | 否 | 开关是否打开,true:打开,false:关闭。<br/>默认值:false<br />该参数支持[$$](../../../quick-start/arkts-two-way-sync.md)双向绑定变量。 | 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci## ToggleType枚举说明 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci| 名称 | 说明 | 52e41f4b71Sopenharmony_ci| -------- | ---------------- | 53e41f4b71Sopenharmony_ci| Checkbox | 提供单选框样式。<br>**说明:**<br/>API version 11开始,Checkbox默认样式由圆角方形变为圆形。<br/>[通用属性margin](ts-universal-attributes-size.md#margin)的默认值为:<br>{<br> top: '14px',<br> right: '14px',<br> bottom: '14px',<br> left: '14px'<br> }。<br/>默认尺寸为:<br>{width:'20vp', height:'20vp'}。 | 54e41f4b71Sopenharmony_ci| Button | 提供状态按钮样式,如果子组件有文本设置,则相应的文本内容会显示在按钮内部。<br/>默认尺寸为:高为28vp,宽无默认值。 | 55e41f4b71Sopenharmony_ci| Switch | 提供开关样式。<br>**说明:**<br/>[通用属性margin](ts-universal-attributes-size.md#margin)默认值为:<br>{<br/> top: '6px',<br/> right: '14px',<br/> bottom: '6px',<br/> left: '14px'<br/> }。<br/>默认尺寸为:<br>{width:'36vp', height:'20vp'}。 | 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci## 属性 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性: 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci### selectedColor 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ciselectedColor(value: ResourceColor) 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci设置组件打开状态的背景颜色。 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci**参数:** 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 76e41f4b71Sopenharmony_ci| ------ | ------------------------------------------ | ---- | ------------------------------------------------------------ | 77e41f4b71Sopenharmony_ci| value | [ResourceColor](ts-types.md#resourcecolor) | 是 | 组件打开状态的背景颜色。<br/>默认值:<br/>当ToggleType为Switch时,默认值为`$r('sys.color.ohos_id_color_component_activated')`<br/>当ToggleType为Checkbox时,默认值为`$r('sys.color.ohos_id_color_component_activated')`<br/>当ToggleType为Button时,默认值为`$r('sys.color.ohos_id_color_component_activated')`混合`$r('sys.color.ohos_id_color_text_highlight_bg')`的透明度。 | 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ci### switchPointColor 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ciswitchPointColor(color: ResourceColor) 82e41f4b71Sopenharmony_ci 83e41f4b71Sopenharmony_ci设置Switch类型的圆形滑块颜色。仅对type为ToggleType.Switch生效。 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci**参数:** 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 94e41f4b71Sopenharmony_ci| ------ | ------------------------------------------ | ---- | -------------------------- | 95e41f4b71Sopenharmony_ci| color | [ResourceColor](ts-types.md#resourcecolor) | 是 | Switch类型的圆形滑块颜色。<br/>默认值:$r('sys.color.ohos_id_color_foreground_contrary') | 96e41f4b71Sopenharmony_ci 97e41f4b71Sopenharmony_ci### switchStyle<sup>12+</sup> 98e41f4b71Sopenharmony_ci 99e41f4b71Sopenharmony_ciswitchStyle(value: SwitchStyle) 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ci设置Switch类型的样式。仅对type为ToggleType.Switch生效。 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 106e41f4b71Sopenharmony_ci 107e41f4b71Sopenharmony_ci**参数:** 108e41f4b71Sopenharmony_ci 109e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 110e41f4b71Sopenharmony_ci| ------ | ------------------------------------- | ---- | ---------------- | 111e41f4b71Sopenharmony_ci| value | [SwitchStyle](#switchstyle12对象说明) | 是 | Switch样式风格。 | 112e41f4b71Sopenharmony_ci 113e41f4b71Sopenharmony_ci### contentModifier<sup>12+</sup> 114e41f4b71Sopenharmony_ci 115e41f4b71Sopenharmony_cicontentModifier(modifier: ContentModifier\<ToggleConfiguration>) 116e41f4b71Sopenharmony_ci 117e41f4b71Sopenharmony_ci定制Toggle内容区的方法。 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 122e41f4b71Sopenharmony_ci 123e41f4b71Sopenharmony_ci**参数:** 124e41f4b71Sopenharmony_ci 125e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 126e41f4b71Sopenharmony_ci| ------ | --------------------------------------------- | ---- | ------------------------------------------------ | 127e41f4b71Sopenharmony_ci| modifier | [ContentModifier\<ToggleConfiguration>](#toggleconfiguration12对象说明) | 是 | 在Toggle组件上,定制内容区的方法。<br/>modifier: 内容修改器,开发者需要自定义class实现ContentModifier接口。 | 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci## SwitchStyle<sup>12+</sup>对象说明 130e41f4b71Sopenharmony_ci 131e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 132e41f4b71Sopenharmony_ci 133e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 134e41f4b71Sopenharmony_ci 135e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 136e41f4b71Sopenharmony_ci| ----------------- | ------------------------------------------- | ---- | ------------------------------------------------------------ | 137e41f4b71Sopenharmony_ci| pointRadius | number \| [Resource](ts-types.md#resource) | 否 | 设置Switch类型的圆形滑块半径。<br />**说明:**<br/>不支持百分比,设定值小于0时按照默认算法设置,设定值大于等于0时按照设定值设置。<br/>未设定此属性时,圆形滑块半径根据默认算法设置。<br/>默认算法:(组件高度(单位:vp) / 2) - (2vp * 组件高度(单位:vp) / 20vp)。 | 138e41f4b71Sopenharmony_ci| unselectedColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 设置Switch类型关闭状态的背景颜色。<br />默认值:0x337F7F7F。 | 139e41f4b71Sopenharmony_ci| pointColor | [ResourceColor](ts-types.md#resourcecolor) | 否 | 设置Switch类型的圆形滑块颜色。<br />默认值:$r('sys.color.ohos_id_color_foreground_contrary') | 140e41f4b71Sopenharmony_ci| trackBorderRadius | number \| [Resource](ts-types.md#resource) | 否 | 设置Switch类型的滑轨的圆角。<br />**说明:**<br/>不支持百分比,设定值小于0时按照默认算法设置,设定值大于组件高度一半时按照组件高度一半设置,其他场合按照设定值设置。<br/>未设定此属性时,滑轨圆角根据默认算法设置。<br/>默认算法:组件高度(单位:vp) / 2。 | 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci## 事件 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件: 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci### onChange 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_cionChange(callback: (isOn: boolean) => void) 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci开关状态切换时触发该事件。 151e41f4b71Sopenharmony_ci 152e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ci**参数:** 159e41f4b71Sopenharmony_ci 160e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 161e41f4b71Sopenharmony_ci| ------ | ------- | ---- | ------------------------------------------------------------ | 162e41f4b71Sopenharmony_ci| isOn | boolean | 是 | 为true时,代表状态从关切换为开。false时,代表状态从开切换为关。 | 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_ci## ToggleConfiguration<sup>12+</sup>对象说明 165e41f4b71Sopenharmony_ci 166e41f4b71Sopenharmony_ci开发者需要自定义class实现ContentModifier接口。 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 173e41f4b71Sopenharmony_ci| ------ | ------ | ------ |-------------------------------- |-------------------------------- | 174e41f4b71Sopenharmony_ci| isOn | boolean| 否 | 否 | 开关是否打开。<br/>默认值:false | 175e41f4b71Sopenharmony_ci| enabled | boolean | 否 | 否 | 是否可以切换状态。 | 176e41f4b71Sopenharmony_ci| triggerChange |Callback\<boolean>| 否 | 否 |触发switch选中状态变化。 | 177e41f4b71Sopenharmony_ci 178e41f4b71Sopenharmony_ci 179e41f4b71Sopenharmony_ci## 示例 180e41f4b71Sopenharmony_ci 181e41f4b71Sopenharmony_ci### 示例1 182e41f4b71Sopenharmony_ci 183e41f4b71Sopenharmony_ci```ts 184e41f4b71Sopenharmony_ci// xxx.ets 185e41f4b71Sopenharmony_ci@Entry 186e41f4b71Sopenharmony_ci@Component 187e41f4b71Sopenharmony_cistruct ToggleExample { 188e41f4b71Sopenharmony_ci build() { 189e41f4b71Sopenharmony_ci Column({ space: 10 }) { 190e41f4b71Sopenharmony_ci Text('type: Switch').fontSize(12).fontColor(0xcccccc).width('90%') 191e41f4b71Sopenharmony_ci Flex({ justifyContent: FlexAlign.SpaceEvenly, alignItems: ItemAlign.Center }) { 192e41f4b71Sopenharmony_ci Toggle({ type: ToggleType.Switch, isOn: false }) 193e41f4b71Sopenharmony_ci .selectedColor('#007DFF') 194e41f4b71Sopenharmony_ci .switchPointColor('#FFFFFF') 195e41f4b71Sopenharmony_ci .onChange((isOn: boolean) => { 196e41f4b71Sopenharmony_ci console.info('Component status:' + isOn) 197e41f4b71Sopenharmony_ci }) 198e41f4b71Sopenharmony_ci 199e41f4b71Sopenharmony_ci Toggle({ type: ToggleType.Switch, isOn: true }) 200e41f4b71Sopenharmony_ci .selectedColor('#007DFF') 201e41f4b71Sopenharmony_ci .switchPointColor('#FFFFFF') 202e41f4b71Sopenharmony_ci .onChange((isOn: boolean) => { 203e41f4b71Sopenharmony_ci console.info('Component status:' + isOn) 204e41f4b71Sopenharmony_ci }) 205e41f4b71Sopenharmony_ci } 206e41f4b71Sopenharmony_ci 207e41f4b71Sopenharmony_ci Text('type: Checkbox').fontSize(12).fontColor(0xcccccc).width('90%') 208e41f4b71Sopenharmony_ci Flex({ justifyContent: FlexAlign.SpaceEvenly, alignItems: ItemAlign.Center }) { 209e41f4b71Sopenharmony_ci Toggle({ type: ToggleType.Checkbox, isOn: false }) 210e41f4b71Sopenharmony_ci .size({ width: 20, height: 20 }) 211e41f4b71Sopenharmony_ci .selectedColor('#007DFF') 212e41f4b71Sopenharmony_ci .onChange((isOn: boolean) => { 213e41f4b71Sopenharmony_ci console.info('Component status:' + isOn) 214e41f4b71Sopenharmony_ci }) 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ci Toggle({ type: ToggleType.Checkbox, isOn: true }) 217e41f4b71Sopenharmony_ci .size({ width: 20, height: 20 }) 218e41f4b71Sopenharmony_ci .selectedColor('#007DFF') 219e41f4b71Sopenharmony_ci .onChange((isOn: boolean) => { 220e41f4b71Sopenharmony_ci console.info('Component status:' + isOn) 221e41f4b71Sopenharmony_ci }) 222e41f4b71Sopenharmony_ci } 223e41f4b71Sopenharmony_ci 224e41f4b71Sopenharmony_ci Text('type: Button').fontSize(12).fontColor(0xcccccc).width('90%') 225e41f4b71Sopenharmony_ci Flex({ justifyContent: FlexAlign.SpaceEvenly, alignItems: ItemAlign.Center }) { 226e41f4b71Sopenharmony_ci Toggle({ type: ToggleType.Button, isOn: false }) { 227e41f4b71Sopenharmony_ci Text('status button').fontColor('#182431').fontSize(12) 228e41f4b71Sopenharmony_ci }.width(106) 229e41f4b71Sopenharmony_ci .selectedColor('rgba(0,125,255,0.20)') 230e41f4b71Sopenharmony_ci .onChange((isOn: boolean) => { 231e41f4b71Sopenharmony_ci console.info('Component status:' + isOn) 232e41f4b71Sopenharmony_ci }) 233e41f4b71Sopenharmony_ci 234e41f4b71Sopenharmony_ci Toggle({ type: ToggleType.Button, isOn: true }) { 235e41f4b71Sopenharmony_ci Text('status button').fontColor('#182431').fontSize(12) 236e41f4b71Sopenharmony_ci }.width(106) 237e41f4b71Sopenharmony_ci .selectedColor('rgba(0,125,255,0.20)') 238e41f4b71Sopenharmony_ci .onChange((isOn: boolean) => { 239e41f4b71Sopenharmony_ci console.info('Component status:' + isOn) 240e41f4b71Sopenharmony_ci }) 241e41f4b71Sopenharmony_ci } 242e41f4b71Sopenharmony_ci }.width('100%').padding(24) 243e41f4b71Sopenharmony_ci } 244e41f4b71Sopenharmony_ci} 245e41f4b71Sopenharmony_ci``` 246e41f4b71Sopenharmony_ci 247e41f4b71Sopenharmony_ci 248e41f4b71Sopenharmony_ci 249e41f4b71Sopenharmony_ci### 示例2 250e41f4b71Sopenharmony_ci 251e41f4b71Sopenharmony_ci该示例实现了自定义设置Toggle组件Switch样式的圆形滑块半径、关闭状态的背景颜色、圆形滑块颜色、滑轨的圆角。 252e41f4b71Sopenharmony_ci 253e41f4b71Sopenharmony_ci```ts 254e41f4b71Sopenharmony_ci// xxx.ets 255e41f4b71Sopenharmony_ci@Entry 256e41f4b71Sopenharmony_ci@Component 257e41f4b71Sopenharmony_cistruct ToggleExample { 258e41f4b71Sopenharmony_ci build() { 259e41f4b71Sopenharmony_ci Column({ space: 10 }) { 260e41f4b71Sopenharmony_ci Text('type: Switch').fontSize(12).fontColor(0xcccccc).width('90%') 261e41f4b71Sopenharmony_ci Flex({ justifyContent: FlexAlign.SpaceEvenly, alignItems: ItemAlign.Center }) { 262e41f4b71Sopenharmony_ci Toggle({ type: ToggleType.Switch, isOn: false }) 263e41f4b71Sopenharmony_ci .selectedColor('#007DFF') 264e41f4b71Sopenharmony_ci .switchStyle({ 265e41f4b71Sopenharmony_ci pointRadius: 15, 266e41f4b71Sopenharmony_ci trackBorderRadius: 10, 267e41f4b71Sopenharmony_ci pointColor: '#D2B48C', 268e41f4b71Sopenharmony_ci unselectedColor: Color.Pink }) 269e41f4b71Sopenharmony_ci .onChange((isOn: boolean) => { 270e41f4b71Sopenharmony_ci console.info('Component status:' + isOn) 271e41f4b71Sopenharmony_ci }) 272e41f4b71Sopenharmony_ci 273e41f4b71Sopenharmony_ci Toggle({ type: ToggleType.Switch, isOn: true }) 274e41f4b71Sopenharmony_ci .selectedColor('#007DFF') 275e41f4b71Sopenharmony_ci .switchStyle({ 276e41f4b71Sopenharmony_ci pointRadius: 15, 277e41f4b71Sopenharmony_ci trackBorderRadius: 10, 278e41f4b71Sopenharmony_ci pointColor: '#D2B48C', 279e41f4b71Sopenharmony_ci unselectedColor: Color.Pink }) 280e41f4b71Sopenharmony_ci .onChange((isOn: boolean) => { 281e41f4b71Sopenharmony_ci console.info('Component status:' + isOn) 282e41f4b71Sopenharmony_ci }) 283e41f4b71Sopenharmony_ci } 284e41f4b71Sopenharmony_ci }.width('100%').padding(24) 285e41f4b71Sopenharmony_ci } 286e41f4b71Sopenharmony_ci} 287e41f4b71Sopenharmony_ci``` 288e41f4b71Sopenharmony_ci 289e41f4b71Sopenharmony_ci 290e41f4b71Sopenharmony_ci 291e41f4b71Sopenharmony_ci### 示例3 292e41f4b71Sopenharmony_ci 293e41f4b71Sopenharmony_ci该示例实现了自定义Toggle样式的功能。自定义样式实现了通过按钮切换圆形颜色的功能:点击蓝圆按钮,圆形背景变蓝色,点击黄圆按钮,圆形背景变黄色。 294e41f4b71Sopenharmony_ci 295e41f4b71Sopenharmony_ci```ts 296e41f4b71Sopenharmony_ci// xxx.ets 297e41f4b71Sopenharmony_ciclass MySwitchStyle implements ContentModifier<ToggleConfiguration> { 298e41f4b71Sopenharmony_ci selectedColor: Color = Color.White 299e41f4b71Sopenharmony_ci lamp: string = 'string'; 300e41f4b71Sopenharmony_ci constructor(selectedColor: Color, lamp: string) { 301e41f4b71Sopenharmony_ci this.selectedColor = selectedColor 302e41f4b71Sopenharmony_ci this.lamp = lamp; 303e41f4b71Sopenharmony_ci } 304e41f4b71Sopenharmony_ci applyContent() : WrappedBuilder<[ToggleConfiguration]> 305e41f4b71Sopenharmony_ci { 306e41f4b71Sopenharmony_ci return wrapBuilder(buildSwitch) 307e41f4b71Sopenharmony_ci } 308e41f4b71Sopenharmony_ci} 309e41f4b71Sopenharmony_ci@Builder function buildSwitch(config: ToggleConfiguration) { 310e41f4b71Sopenharmony_ci Column({ space: 50 }) { 311e41f4b71Sopenharmony_ci Circle({ width: 150, height: 150 }) 312e41f4b71Sopenharmony_ci .fill(config.isOn ? (config.contentModifier as MySwitchStyle).selectedColor : Color.Blue) 313e41f4b71Sopenharmony_ci Row() { 314e41f4b71Sopenharmony_ci Button('蓝'+ JSON.stringify((config.contentModifier as MySwitchStyle).lamp)) 315e41f4b71Sopenharmony_ci .onClick(() => { 316e41f4b71Sopenharmony_ci config.triggerChange(false); 317e41f4b71Sopenharmony_ci }) 318e41f4b71Sopenharmony_ci Button('黄'+ JSON.stringify((config.contentModifier as MySwitchStyle).lamp)) 319e41f4b71Sopenharmony_ci .onClick(() => { 320e41f4b71Sopenharmony_ci config.triggerChange(true); 321e41f4b71Sopenharmony_ci }) 322e41f4b71Sopenharmony_ci } 323e41f4b71Sopenharmony_ci } 324e41f4b71Sopenharmony_ci} 325e41f4b71Sopenharmony_ci 326e41f4b71Sopenharmony_ci@Entry 327e41f4b71Sopenharmony_ci@Component 328e41f4b71Sopenharmony_cistruct Index { 329e41f4b71Sopenharmony_ci build() { 330e41f4b71Sopenharmony_ci Column({ space: 50 }) { 331e41f4b71Sopenharmony_ci Toggle({ type: ToggleType.Switch}) 332e41f4b71Sopenharmony_ci .enabled(true) 333e41f4b71Sopenharmony_ci .contentModifier(new MySwitchStyle(Color.Yellow, '灯')) 334e41f4b71Sopenharmony_ci .onChange((isOn: boolean) => { 335e41f4b71Sopenharmony_ci console.info('Switch Log:' + isOn) 336e41f4b71Sopenharmony_ci }) 337e41f4b71Sopenharmony_ci }.height('100%').width('100%') 338e41f4b71Sopenharmony_ci } 339e41f4b71Sopenharmony_ci} 340e41f4b71Sopenharmony_ci``` 341e41f4b71Sopenharmony_ci 342e41f4b71Sopenharmony_ci 343