ArkUI Toggle切换按钮的用法(非常详细)
Toggle 是切换按钮组件,通常用于提供状态按钮样式、勾选框样式和开关样式,主要用于两种状态之间切换。
切换按钮的创建有以下两种形式:
1) 创建不包含子组件的 Toggle。当 ToggleType 为 Checkbox 或者 Switch 时,创建不包含子组件的 Toggle。例如:

图 1 切换按钮的显示效果
再例如:

图 2 设置是否选中的切换按钮
2) 创建包含子组件的 Toggle。当 ToggleType 为 Button 时,只能包含一个子组件,如果子组件有文本设置,则相应的文本内容会显示在按钮上,示例代码如下:

图 3 包含子组件的切换按钮

图 4 自定义样式的切换按钮
2) 通过 switchPointColor 属性设置 Switch 类型的圆形滑块颜色,仅当 type 为 ToggleType.Switch 时有效。示例代码如下:

图 5 设置了切换按钮滑块颜色的效果

图 6 使用切换按钮切换蓝牙状态的显示效果
ArkUI创建切换按钮
Toggle 通过调用接口来创建,接口调用形式如下:
Toggle(options: { type: ToggleType, isOn?: boolean })
其中,ToggleType 为开关类型,包括 Button、Checkbox 和 Switch;isOn 为切换按钮的状态。从 API version 11 开始,Checkbox 的默认样式由圆角方形变为圆形。切换按钮的创建有以下两种形式:
1) 创建不包含子组件的 Toggle。当 ToggleType 为 Checkbox 或者 Switch 时,创建不包含子组件的 Toggle。例如:
@Entry
@Component
struct ToggleSample {
build() {
Row() {
// 切换按钮,type设置为复选框样式,isOn设置为未选中
Toggle({ type: ToggleType.Checkbox, isOn: false })
// 切换按钮,type设置为复选框样式,isOn设置为选中状态
Toggle({ type: ToggleType.Checkbox, isOn: true })
}.width('100%').justifyContent(FlexAlign.Center)
}
}
显示效果如下图所示:
图 1 切换按钮的显示效果
再例如:
@Entry
@Component
struct ToggleSample {
build() {
Row() {
// 通过type将切换按钮设置为开关样式,isOn设置为未选中
Toggle({ type: ToggleType.Switch, isOn: false })
// 通过type将切换按钮设置为开关样式,isOn设置为已选中
Toggle({ type: ToggleType.Switch, isOn: true })
}.width('100%').justifyContent(FlexAlign.Center)
}
}
显示效果如下图所示:
图 2 设置是否选中的切换按钮
2) 创建包含子组件的 Toggle。当 ToggleType 为 Button 时,只能包含一个子组件,如果子组件有文本设置,则相应的文本内容会显示在按钮上,示例代码如下:
@Entry
@Component
struct ToggleSample {
build() {
Row() {
// 通过type将切换按钮设置为按钮的样式,isOn设置为未选中
Toggle({ type: ToggleType.Button, isOn: false }) {
// 切换按钮可以包含子组件,使用Text设置切换按钮显示的文本
Text('status button').fontColor('#182431').fontSize(12)
}.width(100)
// 通过type将切换按钮设置为按钮的样式,isOn设置为已选中
Toggle({ type: ToggleType.Button, isOn: true }) {
// 切换按钮可以包含子组件,使用Text设置切换按钮要显示的文本
Text('status button').fontColor('#182431').fontSize(12)
}.width(100)
}.width('100%').justifyContent(FlexAlign.Center)
}
}
显示效果如下图所示:
图 3 包含子组件的切换按钮
ArkUI Toggle自定义样式
1) 通过 selectedColor 属性设置 Toggle 被选中后的背景颜色。示例代码如下:
@Entry
@Component
struct ToggleSample {
build() {
Row() {
// 使用type将切换按钮设置为按钮的样式,isOn设置为已选中
Toggle({ type: ToggleType.Button, isOn: true }) {
// 使用Text组件设置要显示的文本及文本样式
Text('status button').fontColor('#182431').fontSize(12)
}.width(100).selectedColor(Color.Pink)
// 将切换按钮设置为复选框样式,isOn设置为已选中
Toggle({ type: ToggleType.Checkbox, isOn: true })
// 设置切换按钮选中后的颜色为粉色
.selectedColor(Color.Pink)
// 将切换按钮设置为开关的样式,isOn设置为已选中
Toggle({ type: ToggleType.Switch, isOn: true })
// 设置选中后的颜色为粉色
.selectedColor(Color.Pink)
}.width('100%').justifyContent(FlexAlign.Center)
}
}
显示效果如下图所示:
图 4 自定义样式的切换按钮
2) 通过 switchPointColor 属性设置 Switch 类型的圆形滑块颜色,仅当 type 为 ToggleType.Switch 时有效。示例代码如下:
@Entry
@Component
struct ToggleSample {
build() {
Row() {
// 通过type将切换按钮设置为开关样式,isOn设置为未选中
Toggle({ type: ToggleType.Switch, isOn: false })
// 将切换按钮的圆点设置为粉色
.switchPointColor(Color.Pink)
// 通过type将切换按钮设置为开关样式,isOn设置为已选中
Toggle({ type: ToggleType.Switch, isOn: true })
// 将切换按钮的圆点设置为粉色
.switchPointColor(Color.Pink)
}.width('100%').justifyContent(FlexAlign.Center)
}
}
显示效果如下图所示:
图 5 设置了切换按钮滑块颜色的效果
ArkUI Toggle添加事件
Toggle 可用于在被选中和取消选中后触发某些操作,可以绑定 onChange 事件来响应操作的自定义行为。
Toggle({ type: ToggleType.Switch, isOn: false })
.onChange((isOn: boolean) => {
if(isOn) {
// 需要执行的操作
}
})
ArkUI Toggle应用场景示例
Toggle 用于切换蓝牙开关状态,示例代码如下:
import { promptAction } from '@kit.ArkUI';
@Entry
@Component
struct ToggleExample {
// 设置当打开蓝牙后弹窗显示的消息
@State BOnSt: promptAction.ShowToastOptions = { 'message': 'Bluetooth is on.' }
// 设置当关闭蓝牙后弹窗显示的消息
@State BOffSt: promptAction.ShowToastOptions = { 'message': 'Bluetooth is off.' }
build() {
Column() {
Row() {
Text("Bluetooth Mode").height(50).fontSize(16)
}
Row() {
Text("Bluetooth").height(50).padding({ left: 10 })
.fontSize(16).textAlign(TextAlign.Start)
.backgroundColor(0xFFFFFF)
// 切换按钮样式设置为开关样式
Toggle({ type: ToggleType.Switch })
.margin({ left: 200, right: 10 })
// 设置切换按钮状态更改时的事件处理函数
.onChange((isOn: boolean) => {
if (isOn) {
// 如果切换按钮状态切换为已选中,则提示蓝牙已打开
promptAction.showToast(this.BOnSt)
} else {
// 如果切换按钮状态切换为未选中,则提示蓝牙已关闭
promptAction.showToast(this.BOffSt)
}
})
}.backgroundColor(0xFFFFFF)
}.padding(10).backgroundColor(0xDCDCDC).width('100%').height('100%')
}
}
显示效果如下图所示:

图 6 使用切换按钮切换蓝牙状态的显示效果
ICP备案:
公安联网备案: