当前位置: 首页 > news >正文

16.ArkUI Toggle的介绍和使用

ArkUI Toggle 组件详解与使用指南

Toggle 是 ArkUI 中用于表示开关状态的交互组件,适用于启用/禁用、显示/隐藏等二元选择场景。以下是 Toggle 组件的详细介绍和使用方法。

基本介绍

Toggle 组件特点:

  • 提供开关样式的二元选择
  • 支持多种样式(勾选框、开关按钮等)
  • 可自定义选中和未选中状态
  • 支持状态变化事件监听

基本使用

1. 基础 Toggle 使用

@Entry
@Component
struct BasicToggleExample {@State isChecked: boolean = falsebuild() {Column({ space: 20 }) {Toggle({ type: ToggleType.Checkbox, isOn: this.isChecked }).onChange((isOn: boolean) => {this.isCheck = isOn})Text(this.isChecked ? '已开启' : '已关闭').fontSize(16)}.width('100%').height('100%').justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center)}
}

2. 不同样式的 Toggle

@Entry
@Component
struct StyleToggleExample {@State checkboxState: boolean = false@State switchState: boolean = true@State buttonState: boolean = falsebuild() {Column({ space: 20 }) {// 复选框样式Row() {Text('复选框:')Toggle({ type: ToggleType.Checkbox, isOn: this.checkboxState }).onChange((isOn: boolean) => {this.checkboxState = isOn})}// 开关样式Row() {Text('开关:')Toggle({ type: ToggleType.Switch, isOn: this.switchState }).size({ width: 50, height: 30 }).onChange((isOn: boolean) => {this.switchState = isOn})}// 按钮样式Toggle({ type: ToggleType.Button, isOn: this.buttonState }).width(120).onChange((isOn: boolean) => {this.buttonState = isOn})}.padding(20)}
}

核心功能

1. Toggle 类型

// 复选框样式
Toggle({ type: ToggleType.Checkbox, isOn: false })// 开关样式
Toggle({ type: ToggleType.Switch, isOn: true })// 按钮样式
Toggle({ type: ToggleType.Button, isOn: false })

2. 状态控制

@State isActive: boolean = falsebuild() {Toggle({ type: ToggleType.Switch, isOn: this.isActive }).enabled(true) // 是否可交互.onChange((isOn: boolean) => {this.isActive = isOn})
}

3. 自定义样式

Toggle({ type: ToggleType.Switch, isOn: this.isOn }).selectedColor('#FF0000') // 选中状态颜色.switchPointColor('#FFFFFF') // 开关按钮颜色.width(60).height(30)

高级功能

1. 自定义 Toggle 内容

@Builder
toggleText(isOn: boolean) {Text(isOn ? 'ON' : 'OFF').fontColor(isOn ? '#FFFFFF' : '#000000')
}build() {Toggle({ type: ToggleType.Button, isOn: this.isOn }).width(100).height(40).selectedColor('#1890FF').backgroundColor('#EEEEEE').builder(this.toggleText)
}

2. 与其它组件联动

@Entry
@Component
struct ToggleLinkExample {@State isDarkMode: boolean = falsebuild() {Column() {Row() {Text('深色模式')Toggle({ type: ToggleType.Switch, isOn: this.isDarkMode }).onChange((isOn: boolean) => {this.isDarkMode = isOn})}// 根据Toggle状态显示不同内容if (this.isDarkMode) {Text('当前为深色模式').fontColor('#FFFFFF').backgroundColor('#333333')} else {Text('当前为浅色模式').fontColor('#000000').backgroundColor('#FFFFFF')}}.width('100%').height('100%').backgroundColor(this.isDarkMode ? '#222222' : '#F5F5F5')}
}

3. 动态 Toggle 列表

@Entry
@Component
struct DynamicToggleExample {@State settings = [{ name: '消息通知', enabled: true },{ name: '夜间模式', enabled: false },{ name: '自动更新', enabled: true }]build() {List() {ForEach(this.settings, (item, index) => {ListItem() {Row() {Text(item.name)Blank()Toggle({ type: ToggleType.Switch, isOn: item.enabled }).onChange((isOn: boolean) => {this.settings[index].enabled = isOn})}}})}}
}

最佳实践

  1. 明确标签:为每个 Toggle 提供清晰的文本说明
  2. 合理样式:根据场景选择合适的 Toggle 类型
  3. 即时反馈:状态变化应产生明显的视觉反馈
  4. 无障碍设计:确保足够的颜色对比度和可操作区域
  5. 性能优化:避免在 onChange 中执行耗时操作

实际应用示例

1. 设置项开关

@Entry
@Component
struct AppSettings {@State notificationsEnabled: boolean = true@State locationEnabled: boolean = false@State darkModeEnabled: boolean = falsebuild() {List({ space: 10 }) {ListItem() {Row() {Text('消息通知')Blank()Toggle({ type: ToggleType.Switch, isOn: this.notificationsEnabled }).onChange((isOn: boolean) => {this.notificationsEnabled = isOn})}}ListItem() {Row() {Text('位置服务')Blank()Toggle({ type: ToggleType.Switch, isOn: this.locationEnabled }).onChange((isOn: boolean) => {this.locationEnabled = isOn})}}ListItem() {Row() {Text('深色模式')Blank()Toggle({ type: ToggleType.Switch, isOn: this.darkModeEnabled }).onChange((isOn: boolean) => {this.darkModeEnabled = isOn})}}}.width('100%').height('100%')}
}

2. 任务列表

@Entry
@Component
struct TaskList {@State tasks = [{ id: 1, name: '完成项目设计', completed: false },{ id: 2, name: '编写开发文档', completed: true },{ id: 3, name: '测试功能模块', completed: false }]build() {Column() {ForEach(this.tasks, (task, index) => {Row() {Toggle({ type: ToggleType.Checkbox, isOn: task.completed }).onChange((isOn: boolean) => {this.tasks[index].completed = isOn})Text(task.name).fontSize(16).fontColor(task.completed ? '#999999' : '#000000').decoration({ type: task.completed ? TextDecorationType.LineThrough : TextDecorationType.None }).margin({ left: 10 })}.padding(10).borderRadius(5).backgroundColor(task.completed ? '#F5F5F5' : '#FFFFFF')})}.padding(20)}
}

通过合理使用 Toggle 组件,可以创建直观的二元选择交互,提升应用的用户体验。

相关文章:

  • 软件测试流程
  • Mac中 “XX”文件已损坏,无法打开 解决方案
  • 系统架构师2025年论文《论软件架构评估2》
  • DeepSeek+Cline:开启自动化编程新纪元
  • guvcview-源码记录
  • 蓝牙GATT协议
  • 认识 Linux 内存构成:Linux 内存调优之页表、TLB、缺页异常、大页认知
  • 蛋白质大语言模型ESM介绍
  • 前端基础之《Vue(12)—插件封装》
  • 什么是 JSON?学习JSON有什么用?在springboot项目里如何实现JSON的序列化和反序列化?
  • docker-compose安装RustDesk远程工具
  • tkinter的窗口构建、原生组件放置和监测事件
  • windows安装jax和jaxlib的教程(cuda)成功安装
  • 文件IO(Java)
  • 5.3 Dify:低代码平台,适用于企业快速部署合规AI应用
  • 自定义电池电量显示控件 BatteryView 实现
  • express的模板handlebars用app.engine()创建配置和用exphbs.create()的区别
  • Vue3后代组件多祖先通讯设计方案
  • MATLAB基础应用精讲-【基础知识篇】发布和共享 MATLAB 代码
  • ThinkPHP6模型中多组条件逻辑或Or查询的使用
  • 中纪报:五一节前公开通报释放强烈信号,以铁律狠刹歪风邪气
  • “下山虎”张名扬一回合摘下“狮心”:你们再嘘一个给我听听
  • 规范涉企案件审判执行工作,最高法今天发布通知
  • 建投读书会·东西汇流|全球物品:跨文化交流视域下的明清外销瓷
  • 单位被裁定补缴12年社保,滞纳金该谁出?
  • 传媒湃︱《金陵晚报》副刊“雨花石”5月起改为免费刊登