文档管理中心
您当前浏览的HarmonyOS 5.0.2(API 14)文档归档不再维护,推荐您使用最新版本。详细请参考文档维护策略变更

Toggle

组件提供勾选框样式、状态按钮样式及开关样式。

说明

该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

子组件

仅当ToggleType为Button时可包含子组件。

接口

Toggle(options: { type: ToggleType, isOn?: boolean })

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
type ToggleType

开关的样式。

默认值:ToggleType.Switch

isOn boolean

开关是否打开,true:打开,false:关闭。

默认值:false

从API version 10开始,该参数支持$$双向绑定变量。

ToggleType枚举说明

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

展开
名称 说明
Checkbox

提供单选框样式。

说明:

API version 11开始,Checkbox默认样式由圆角方形变为圆形。

通用属性margin的默认值为:

{

top: '14px',

right: '14px',

bottom: '14px',

left: '14px'

}。

默认尺寸为:

{width:'20vp', height:'20vp'}。

Button

提供状态按钮样式,如果子组件有文本设置,则相应的文本内容会显示在按钮内部。

默认尺寸为:高为28vp,宽无默认值。

Switch

提供开关样式。

说明:

通用属性margin默认值为:

{

top: '6px',

right: '14px',

bottom: '6px',

left: '14px'

}。

默认尺寸为:

{width:'36vp', height:'20vp'}。

属性

除支持通用属性外,还支持以下属性:

selectedColor

selectedColor(value: ResourceColor)

设置组件打开状态的背景颜色。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value ResourceColor

组件打开状态的背景颜色。

默认值:

当ToggleType为Switch时,默认值为$r('sys.color.ohos_id_color_component_activated')

当ToggleType为Checkbox时,默认值为$r('sys.color.ohos_id_color_component_activated')

当ToggleType为Button时,默认值为$r('sys.color.ohos_id_color_component_activated')混合$r('sys.color.ohos_id_color_text_highlight_bg')的透明度。

switchPointColor

switchPointColor(color: ResourceColor)

设置Switch类型的圆形滑块颜色。仅对type为ToggleType.Switch生效。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
color ResourceColor

Switch类型的圆形滑块颜色。

默认值:$r('sys.color.ohos_id_color_foreground_contrary')

switchStyle12+

switchStyle(value: SwitchStyle)

设置Switch类型的样式。仅对type为ToggleType.Switch生效。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
value SwitchStyle Switch样式风格。

contentModifier12+

contentModifier(modifier: ContentModifier<ToggleConfiguration>)

定制Toggle内容区的方法。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
modifier ContentModifier<ToggleConfiguration>

在Toggle组件上,定制内容区的方法。

modifier: 内容修改器,开发者需要自定义class实现ContentModifier接口。

SwitchStyle12+对象说明

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

展开
名称 类型 必填 说明
pointRadius number | Resource

设置Switch类型的圆形滑块半径。

说明:

不支持百分比,设定值小于0时按照默认算法设置,设定值大于等于0时按照设定值设置。

未设定此属性时,圆形滑块半径根据默认算法设置。

默认算法:(组件高度(单位:vp) / 2) - (2vp * 组件高度(单位:vp) / 20vp)。

unselectedColor ResourceColor

设置Switch类型关闭状态的背景颜色。

默认值:0x337F7F7F。

pointColor ResourceColor

设置Switch类型的圆形滑块颜色。

默认值:$r('sys.color.ohos_id_color_foreground_contrary')

trackBorderRadius number | Resource

设置Switch类型的滑轨的圆角。

说明:

不支持百分比,设定值小于0时按照默认算法设置,设定值大于组件高度一半时按照组件高度一半设置,其他场合按照设定值设置。

未设定此属性时,滑轨圆角根据默认算法设置。

默认算法:组件高度(单位:vp) / 2。

事件

除支持通用事件外,还支持以下事件:

onChange

onChange(callback: (isOn: boolean) => void)

开关状态切换时触发该事件。

卡片能力: 从API version 9开始,该接口支持在ArkTS卡片中使用。

元服务API: 从API version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

展开
参数名 类型 必填 说明
isOn boolean 为true时,代表状态从关切换为开。false时,代表状态从开切换为关。

ToggleConfiguration12+对象说明

开发者需要自定义class实现ContentModifier接口。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

展开
名称 类型 只读 可选 说明
isOn boolean

开关是否打开。

默认值:false

enabled boolean 是否可以切换状态。
triggerChange Callback<boolean> 触发switch选中状态变化。

示例

示例1(设置开关的样式)

该示例通过配置ToggleType设置Toggle的勾选框样式、状态按钮样式及开关样式。

收起
自动换行
深色代码主题
复制
  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct ToggleExample {
  5. build() {
  6. Column({ space: 10 }) {
  7. Text('type: Switch').fontSize(12).fontColor(0xcccccc).width('90%')
  8. Flex({ justifyContent: FlexAlign.SpaceEvenly, alignItems: ItemAlign.Center }) {
  9. Toggle({ type: ToggleType.Switch, isOn: false })
  10. .selectedColor('#007DFF')
  11. .switchPointColor('#FFFFFF')
  12. .onChange((isOn: boolean) => {
  13. console.info('Component status:' + isOn)
  14. })
  15. Toggle({ type: ToggleType.Switch, isOn: true })
  16. .selectedColor('#007DFF')
  17. .switchPointColor('#FFFFFF')
  18. .onChange((isOn: boolean) => {
  19. console.info('Component status:' + isOn)
  20. })
  21. }
  22. Text('type: Checkbox').fontSize(12).fontColor(0xcccccc).width('90%')
  23. Flex({ justifyContent: FlexAlign.SpaceEvenly, alignItems: ItemAlign.Center }) {
  24. Toggle({ type: ToggleType.Checkbox, isOn: false })
  25. .size({ width: 20, height: 20 })
  26. .selectedColor('#007DFF')
  27. .onChange((isOn: boolean) => {
  28. console.info('Component status:' + isOn)
  29. })
  30. Toggle({ type: ToggleType.Checkbox, isOn: true })
  31. .size({ width: 20, height: 20 })
  32. .selectedColor('#007DFF')
  33. .onChange((isOn: boolean) => {
  34. console.info('Component status:' + isOn)
  35. })
  36. }
  37. Text('type: Button').fontSize(12).fontColor(0xcccccc).width('90%')
  38. Flex({ justifyContent: FlexAlign.SpaceEvenly, alignItems: ItemAlign.Center }) {
  39. Toggle({ type: ToggleType.Button, isOn: false }) {
  40. Text('status button').fontColor('#182431').fontSize(12)
  41. }.width(106)
  42. .selectedColor('rgba(0,125,255,0.20)')
  43. .onChange((isOn: boolean) => {
  44. console.info('Component status:' + isOn)
  45. })
  46. Toggle({ type: ToggleType.Button, isOn: true }) {
  47. Text('status button').fontColor('#182431').fontSize(12)
  48. }.width(106)
  49. .selectedColor('rgba(0,125,255,0.20)')
  50. .onChange((isOn: boolean) => {
  51. console.info('Component status:' + isOn)
  52. })
  53. }
  54. }.width('100%').padding(24)
  55. }
  56. }

示例2(自定义开关类型的样式)

该示例实现了自定义设置Toggle组件Switch样式的圆形滑块半径、关闭状态的背景颜色、圆形滑块颜色、滑轨的圆角。

收起
自动换行
深色代码主题
复制
  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct ToggleExample {
  5. build() {
  6. Column({ space: 10 }) {
  7. Text('type: Switch').fontSize(12).fontColor(0xcccccc).width('90%')
  8. Flex({ justifyContent: FlexAlign.SpaceEvenly, alignItems: ItemAlign.Center }) {
  9. Toggle({ type: ToggleType.Switch, isOn: false })
  10. .selectedColor('#007DFF')
  11. .switchStyle({
  12. pointRadius: 15,
  13. trackBorderRadius: 10,
  14. pointColor: '#D2B48C',
  15. unselectedColor: Color.Pink })
  16. .onChange((isOn: boolean) => {
  17. console.info('Component status:' + isOn)
  18. })
  19. Toggle({ type: ToggleType.Switch, isOn: true })
  20. .selectedColor('#007DFF')
  21. .switchStyle({
  22. pointRadius: 15,
  23. trackBorderRadius: 10,
  24. pointColor: '#D2B48C',
  25. unselectedColor: Color.Pink })
  26. .onChange((isOn: boolean) => {
  27. console.info('Component status:' + isOn)
  28. })
  29. }
  30. }.width('100%').padding(24)
  31. }
  32. }

示例3(自定义Toggle样式)

该示例实现了自定义Toggle样式的功能。自定义样式实现了通过按钮切换圆形颜色的功能:点击蓝圆按钮,圆形背景变蓝色,点击黄圆按钮,圆形背景变黄色。

收起
自动换行
深色代码主题
复制
  1. // xxx.ets
  2. class MySwitchStyle implements ContentModifier<ToggleConfiguration> {
  3. selectedColor: Color = Color.White
  4. lamp: string = 'string';
  5. constructor(selectedColor: Color, lamp: string) {
  6. this.selectedColor = selectedColor
  7. this.lamp = lamp;
  8. }
  9. applyContent() : WrappedBuilder<[ToggleConfiguration]>
  10. {
  11. return wrapBuilder(buildSwitch)
  12. }
  13. }
  14. @Builder function buildSwitch(config: ToggleConfiguration) {
  15. Column({ space: 50 }) {
  16. Circle({ width: 150, height: 150 })
  17. .fill(config.isOn ? (config.contentModifier as MySwitchStyle).selectedColor : Color.Blue)
  18. Row() {
  19. Button('蓝'+ JSON.stringify((config.contentModifier as MySwitchStyle).lamp))
  20. .onClick(() => {
  21. config.triggerChange(false);
  22. })
  23. Button('黄'+ JSON.stringify((config.contentModifier as MySwitchStyle).lamp))
  24. .onClick(() => {
  25. config.triggerChange(true);
  26. })
  27. }
  28. }
  29. }
  30. @Entry
  31. @Component
  32. struct Index {
  33. build() {
  34. Column({ space: 50 }) {
  35. Toggle({ type: ToggleType.Switch})
  36. .enabled(true)
  37. .contentModifier(new MySwitchStyle(Color.Yellow, '灯'))
  38. .onChange((isOn: boolean) => {
  39. console.info('Switch Log:' + isOn)
  40. })
  41. }.height('100%').width('100%')
  42. }
  43. }

在 API参考 中进行搜索
请输入您想要搜索的关键词