1# 切换按钮 (Toggle) 2 3 4Toggle组件提供状态按钮样式、勾选框样式和开关样式,一般用于两种状态之间的切换。具体用法请参考[Toggle](../reference/apis-arkui/arkui-ts/ts-basic-components-toggle.md)。 5 6 7## 创建切换按钮 8 9Toggle通过调用[ToggleOptions](../reference/apis-arkui/arkui-ts/ts-basic-components-toggle.md#toggleoptions18对象说明)来创建,具体调用形式如下: 10 11```ts 12Toggle(options: { type: ToggleType, isOn?: boolean }) 13``` 14 15其中,ToggleType为开关类型,包括Button、Checkbox和Switch,isOn为切换按钮的状态。 16 17API version 11开始,Checkbox默认样式由圆角方形变为圆形。 18 19接口调用有以下两种形式: 20 21 22- 创建不包含子组件的Toggle。 23 当ToggleType为Checkbox或者Switch时,用于创建不包含子组件的Toggle: 24 25 26 ```ts 27 Toggle({ type: ToggleType.Checkbox, isOn: false }) 28 Toggle({ type: ToggleType.Checkbox, isOn: true }) 29 ``` 30 31  32 33 ```ts 34 Toggle({ type: ToggleType.Switch, isOn: false }) 35 Toggle({ type: ToggleType.Switch, isOn: true }) 36 ``` 37 38  39 40- 创建包含子组件的Toggle。 41 当ToggleType为Button时,只能包含一个子组件,如果子组件有文本设置,则相应的文本内容会显示在按钮上。 42 43 ```ts 44 Toggle({ type: ToggleType.Button, isOn: false }) { 45 Text('status button') 46 .fontColor('#182431') 47 .fontSize(12) 48 }.width(100) 49 Toggle({ type: ToggleType.Button, isOn: true }) { 50 Text('status button') 51 .fontColor('#182431') 52 .fontSize(12) 53 }.width(100) 54 ``` 55 56  57 58 59## 自定义样式 60 61- 通过selectedColor属性设置Toggle打开选中后的背景颜色。 62 63 ```ts 64 Toggle({ type: ToggleType.Button, isOn: true }) { 65 Text('status button') 66 .fontColor('#182431') 67 .fontSize(12) 68 }.width(100).selectedColor(Color.Pink) 69 Toggle({ type: ToggleType.Checkbox, isOn: true }) 70 .selectedColor(Color.Pink) 71 Toggle({ type: ToggleType.Switch, isOn: true }) 72 .selectedColor(Color.Pink) 73 ``` 74 75  76 77- 通过switchPointColor属性设置Switch类型的圆形滑块颜色,仅对type为ToggleType.Switch生效。 78 79 ```ts 80 Toggle({ type: ToggleType.Switch, isOn: false }) 81 .switchPointColor(Color.Pink) 82 Toggle({ type: ToggleType.Switch, isOn: true }) 83 .switchPointColor(Color.Pink) 84 ``` 85 86  87 88 89## 添加事件 90 91除支持[通用事件](../reference/apis-arkui/arkui-ts/ts-component-general-events.md)外,Toggle还用于选中和取消选中后触发某些操作,可以绑定onChange事件来响应操作后的自定义行为。 92 93 94```ts 95Toggle({ type: ToggleType.Switch, isOn: false }) 96 .onChange((isOn: boolean) => { 97 if(isOn) { 98 // 需要执行的操作 99 } 100 }) 101``` 102 103 104## 场景示例 105 106Toggle用于切换蓝牙开关状态。 107 108```ts 109// xxx.ets 110import { promptAction } from '@kit.ArkUI'; 111 112@Entry 113@Component 114struct ToggleExample { 115 @State BOnSt: promptAction.ShowToastOptions = { 'message': 'Bluetooth is on.' }; 116 @State BOffSt: promptAction.ShowToastOptions = { 'message': 'Bluetooth is off.' }; 117 118 build() { 119 Column() { 120 Row() { 121 Text("Bluetooth Mode") 122 .height(50) 123 .fontSize(16) 124 } 125 126 Row() { 127 Text("Bluetooth") 128 .height(50) 129 .padding({ left: 10 }) 130 .fontSize(16) 131 .textAlign(TextAlign.Start) 132 .backgroundColor(0xFFFFFF) 133 Toggle({ type: ToggleType.Switch }) 134 .margin({ left: 200, right: 10 }) 135 .onChange((isOn: boolean) => { 136 if (isOn) { 137 this.getUIContext().getPromptAction().showToast(this.BOnSt); 138 } else { 139 this.getUIContext().getPromptAction().showToast(this.BOffSt); 140 } 141 }) 142 } 143 .backgroundColor(0xFFFFFF) 144 } 145 .padding(10) 146 .backgroundColor(0xDCDCDC) 147 .width('100%') 148 .height('100%') 149 } 150} 151``` 152 153 154 155