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>&nbsp;top: '14px',<br>&nbsp;right: '14px',<br>&nbsp;bottom: '14px',<br>&nbsp;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/>&nbsp;top: '6px',<br/>&nbsp;right: '14px',<br/>&nbsp;bottom: '6px',<br/>&nbsp;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:&nbsp;(isOn:&nbsp;boolean)&nbsp;=&gt;&nbsp;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![toggle](figures/toggle.gif)
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![toggle](figures/toggleSwitchStyle.gif)
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![toggle](figures/Toggle_builder.gif)
343