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

HarmonyOS6 ArkTS CheckboxGroup

文章目录

    • 组件
      • 1. 组件定义
      • 2. 核心特性
    • 完整代码
    • 核心API与属性
      • 1. 构造参数
      • 2. 核心样式属性(官方标准属性)
      • 3. 形状枚举 `CheckBoxShape`
      • 4. 状态监听 `onChange`
        • 返回值 `CheckboxGroupResult`
        • 群组状态 `SelectStatus`
    • 核心功能
      • 1. 群组绑定规则
      • 2. 全选/部分选中/取消全选 自动逻辑
      • 3. 状态同步规范
      • 总结

组件

1. 组件定义

CheckboxGroup是多选框群组控制器,用于统一管理一组Checkbox组件的选中状态,实现全选、反选、部分选中、状态联动等核心功能,是表单、列表批量选择、筛选功能的核心组件。

2. 核心特性

  • 与同组Checkbox自动双向联动
  • 支持全选/部分选中/未选中三种状态自动识别
  • 统一配置群组样式、颜色、形状
  • 实时返回选中的选项名称列表
  • 适配HarmonyOS全端设备(手机、平板、智慧屏等)

完整代码

// CheckboxGroupDemo.ets @Entry @Component struct CheckboxGroupDemo { // 控制全选状态(由CheckboxGroup自动维护,不要手动改) @State isSelectAll: boolean = false; // 记录选中的选项名称 @State selectedNames: Array<string> = []; build() { Column({ space: 20 }) { Text("CheckboxGroup 全选群组示例") .fontSize(22) .fontWeight(FontWeight.Bold) .margin({ top: 20 }); // ========== 全选按钮(CheckboxGroup) ========== Flex({ alignItems: ItemAlign.Center }) { CheckboxGroup({ group: "myGroup" }) .selectedColor("#007DFF") .unselectedColor("#999") .checkboxShape(CheckBoxShape.ROUNDED_SQUARE) .mark({ strokeColor: Color.White, strokeWidth: 2, size: 16 }) .onChange((result: CheckboxGroupResult) => { // 接收群组状态:All/Part/None console.info("群组状态:" + JSON.stringify(result)); this.selectedNames = result.name; // 同步全选状态 this.isSelectAll = result.status === SelectStatus.All; }); Text("全选") .fontSize(18) // 去掉了手动改isSelectAll逻辑,避免冲突! } .width("100%") .padding({ left: 15 }); // 分割线 Divider() .width("90%") .color("#eee") .margin(10); // ========== 同组 Checkbox ========== Flex({ direction: FlexDirection.Column }) { // 选项1 Flex({ alignItems: ItemAlign.Center }) { Checkbox({ name: "item1", group: "myGroup" }) .selectedColor("#007DFF") .unselectedColor("#999") .shape(CheckBoxShape.ROUNDED_SQUARE) .mark({ strokeColor: Color.White }) .onChange((value: boolean) => { console.info("item1 状态:" + value); }); Text("选项 1").fontSize(17); } // 选项2 Flex({ alignItems: ItemAlign.Center }) { Checkbox({ name: "item2", group: "myGroup" }) .selectedColor("#007DFF") .unselectedColor("#999") .shape(CheckBoxShape.ROUNDED_SQUARE) .mark({ strokeColor: Color.White }) .onChange((value: boolean) => { console.info("item2 状态:" + value); }); Text("选项 2").fontSize(17); } // 选项3 Flex({ alignItems: ItemAlign.Center}) { Checkbox({ name: "item3", group: "myGroup" }) .selectedColor("#007DFF") .unselectedColor("#999") .shape(CheckBoxShape.ROUNDED_SQUARE) .mark({ strokeColor: Color.White }) .onChange((value: boolean) => { console.info("item3 状态:" + value); }); Text("选项 3").fontSize(17); } } .padding({ left: 15 }); // ========== 显示选中结果 ========== Column({ space: 8 }) { Text(`当前全选状态:${this.isSelectAll ? "已全选" : "未全选"}`) .fontSize(16) .fontColor("#333"); Text(`已选中:${this.selectedNames.length > 0 ? this.selectedNames.join("、") : "无"}`) .fontSize(16) .fontColor("#007DFF"); } .width("100%") .padding(15) .backgroundColor("#f8f8f8") .borderRadius(12) .margin(10); } .width("100%") .height("100%") .backgroundColor("#fff"); } }

运行效果如图:


核心API与属性

1. 构造参数

CheckboxGroup({ group: "myGroup" })
  • group群组唯一标识,字符串类型
  • 所有需要归为一组的Checkbox,必须设置相同的group值

2. 核心样式属性(官方标准属性)

属性名作用示例值
selectedColor设置群组/子项选中背景色#007DFF
unselectedColor设置群组/子项未选中边框色#999
checkboxShape设置多选框形状(圆形/圆角方形)CheckBoxShape.ROUNDED_SQUARE
mark自定义对勾样式(颜色、粗细、尺寸){strokeColor: Color.White}

3. 形状枚举CheckBoxShape

  • CIRCLE:圆形多选框
  • ROUNDED_SQUARE:圆角方形多选框(示例默认使用)

4. 状态监听onChange

.onChange((result: CheckboxGroupResult) => { this.selectedNames = result.name; this.isSelectAll = result.status === SelectStatus.All; })
返回值CheckboxGroupResult
  • result.name已选中的Checkbox名称数组
  • result.status:群组整体状态,枚举值SelectStatus
群组状态SelectStatus
  • All:全部选中
  • Part:部分选中
  • None:全部未选中

核心功能

1. 群组绑定规则

  1. CheckboxGroup+ 多个Checkbox设置相同group名称
  2. 系统自动建立关联,无需额外代码
  3. 状态双向联动:全选控制子项,子项控制全选

2. 全选/部分选中/取消全选 自动逻辑

  • 所有子项选中 →status = All→ 全选框勾选
  • 部分子项选中 →status = Part→ 全选框半选(系统自动)
  • 无选中 →status = None→ 全选框取消

3. 状态同步规范

  • 禁止手动修改selectAll绑定变量
  • 全选状态必须由onChange返回的status自动赋值
  • 这是避免状态错乱、选项全部取消的核心规范

总结

  1. group必须唯一且一致
    不同群组必须使用不同名称,避免状态冲突。
  2. 禁止手动强制修改全选状态
    全选状态必须由CheckboxGroup.onChange自动维护,否则会出现状态错乱。
  3. Checkbox必须配置name
    用于在result.name中识别选中项,是业务逻辑的核心标识。
  4. 样式优先级
    Checkbox可单独配置样式,会覆盖CheckboxGroup的统一样式。
  5. 版本要求
    所有属性仅支持API 11+ / HarmonyOS 6

如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力

http://www.jsqmd.com/news/661257/

相关文章:

  • Rust的闭包最佳实践
  • 终极指南:5分钟学会用FanControl掌控Windows风扇智能控制
  • 打破平台壁垒:在Windows上轻松安装安卓应用的三大突破
  • AI 搜索排名优化GEO系统 支持私有化源码部署与 OEM 贴牌,具备私有化部署能力与深度定制技术正在占据产业链的高价值环节 - 速递信息
  • React原理深入
  • 配置Anaconda Jupyter Notebook AI通用工作环境
  • QSpectrumAnalyzer终极指南:10分钟掌握专业SDR频谱分析工具
  • 从Copilot到CodeWhisperer,智能生成代码的依赖熵增问题全解析,Google/微软内部治理白皮书首度公开
  • M4S转MP4工具:三分钟掌握B站缓存视频永久保存方案
  • GLM-4.1V-9B-Base在复杂网络协议分析中的应用构想
  • Outfit字体:如何用开源方案实现品牌视觉一致性并降低80%设计成本
  • Phi-4-mini-reasoning开源镜像:Phi系列最小推理模型的CSDN GPU适配版
  • 源代码论文分享|别再只收藏不打开了,这份在线试题库系统资料真的值得你认真看一遍!
  • 如何在5分钟内实现Word到LaTeX的完美转换:docx2tex终极指南
  • Python处理遥感大图内存爆炸?手把手教你用Rasterio分块读取Tiff(附内存监控代码)
  • 【Linux】ARM篇七--UART串口驱动开发与调试实战
  • WeChatExporter:专业级微信聊天记录本地化备份解决方案
  • AGI爆发临界点倒计时(2025±18个月):MIT+DeepMind联合白皮书未公开数据首次披露
  • 如何在Windows上安装安卓应用:APK Installer的终极解决方案
  • 终极指南:使用applera1n免费解锁iOS 15-16设备的激活限制
  • 重塑企业数字资产边界:基于Go高并发架构的壹信即时通讯源码全景解析与商业落地实战 - 壹软科技
  • FigmaCN技术实现:如何通过浏览器扩展实现Figma界面实时汉化
  • CVE(Common Vulnerabilities and Exposures 通用漏洞披露)介绍(给每个已公开安全漏洞分配一个唯一编号)MITRE公司、CNA、CVE-年份-编号、CVSS评分
  • k8s配置nfs存储类
  • macOS视频预览终极指南:3个技巧让Finder识别所有视频格式
  • 3个关键步骤:用PyBullet构建专业级无人机强化学习环境
  • 欧卡北欧超写实影调画质丨雪月光照+Ultimate Graphics Mod+Reshade特调滤镜+PNG、JBX——鲜艳配置
  • 告别重复劳动:用CodeGeeX的‘交互模式’和‘智能问答’,5分钟搞定C#单元测试和代码解释
  • 如何用本地AI助手突破性提升Obsidian笔记的智能与隐私
  • 别再踩坑了!Python列表赋值‘幽灵修改’问题的深度分析与三种解决方案