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

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 组件,可以创建直观的二元选择交互,提升应用的用户体验。

http://www.xdnf.cn/news/2018.html

相关文章:

  • UML 活动图详解之网络媒体教学系统活动图分析
  • Memcached 主主复制架构搭建与 Keepalived 高可用实现
  • OpenCV 图形API(64)图像结构分析和形状描述符------在图像中查找轮廓函数findContours()
  • vue2实现Blod文件流下载
  • 使用ACME给动态域名下的Synology NAS免费申请SSL证书(无需开放80/443端口)
  • Docker拉取镜像代理配置实践与经验分享
  • 「Java EE开发指南」如何使用MyEclipse的可视化JSF编辑器设计JSP?(一)
  • SQLAlchemy 2.x 异步查询方法比较
  • Android 14 修改侧滑手势动画效果
  • xfce桌面汉化设置
  • 【防火墙 pfsense】2配置
  • 豆瓣图书数据采集与可视化分析(三)- 豆瓣图书数据统计分析
  • OSPF网络协议
  • Antd Modal Drawer 更改默认项
  • WSL 安装过程整理
  • 应用在物联网设备的爱普生可编程晶振SG-8018CA
  • Redis是单线程的,如何提高多核CPU的利用率?
  • 大学IP广播系统解决方案:构建数字化智慧化大学校园IP广播平台
  • 【含文档+PPT+源码】基于微信小程序的校园快递平台
  • HTML 模板技术与服务端渲染
  • 京东平台关键字搜索接口开发指南:Python实现与代码详解
  • PicoVR眼镜在XR融合现实显示模式下无法显示粒子问题
  • 大模型扫盲之推理性能指标全面详解
  • linux系统问题杂谈
  • Framework模块编译脚本利器
  • KafkaSpark-Streaming
  • C语言数据类型全面解析:从入门到精通
  • Django【应用 01】django-plotly-dash安装及使用
  • Java 设计模式心法之第22篇 - 备忘录 (Memento) - 捕获与恢复对象状态的“时光机”
  • 力扣-160.相交链表