HarmonyOS6 ArkTS Checkbox
文章目录组件基础说明核心作用核心属性前置完整代码核心功能与样式详解1. 基础状态管理核心实现代码关键片段关键说明2. 形状定制圆形/圆角方形形状枚举值代码关键片段3. 全维度颜色定制颜色配置项详解自定义配色示例4. 对勾样式精细化调整对勾配置项详解代码关键片段5. 多选项组合多选组核心实现逻辑代码关键片段关键说明总结组件基础说明核心作用Checkbox为多选框组件用于实现单个/多个选项的选中/未选中状态切换支持自定义形状、颜色、对勾样式配合状态变量可实现双向绑定与状态监听是表单、筛选、设置等场景的常用基础组件。核心属性前置核心分类关键属性/方法作用状态控制select(boolean)设置组件初始/当前选中状态状态控制onChange((value:boolean)void)监听选中状态变化返回最新布尔值样式定制shape(CheckBoxShape)设置组件形状支持圆形/圆角方形颜色定制selectedColor(string/Color)设置组件选中时的背景色颜色定制unselectedColor(string/Color)设置组件未选中时的边框色对勾样式mark({strokeColor,strokeWidth,size})自定义对勾的颜色、粗细、尺寸完整代码// CheckboxFullStyle.ets Entry Component struct CheckboxFullStyle { // 双向绑定选中状态 State isChecked: boolean false State checkList: boolean[] [false, false, false] build() { Column({ space: 20 }) { Text(Checkbox 完整样式示例).fontSize(22).fontWeight(FontWeight.Bold) // 1. 基础圆形CheckboxAPI11默认圆形 Flex({ alignItems: ItemAlign.Center }) { Checkbox({ name: circleCheckbox }) .select(this.isChecked) // 选中状态 .selectedColor(#007DFF) // 选中背景色 .unselectedColor(#999999) // 未选中边框色 .mark({ strokeColor: Color.White, // 对勾颜色 strokeWidth: 2, // 对勾粗细 size: 16 // 对勾大小 }) .shape(CheckBoxShape.CIRCLE) // 圆形 .onChange((value: boolean) { this.isChecked value console.info(圆形Checkbox状态${value}) }) Text(基础圆形多选框).fontSize(16) } // 2. 圆角方形Checkbox Flex({ alignItems: ItemAlign.Center }) { Checkbox({ name: squareCheckbox }) .select(false) .selectedColor(#FF4A6E) .unselectedColor(#CCCCCC) .mark({ strokeColor: Color.White, strokeWidth: 2, size: 16 }) .shape(CheckBoxShape.ROUNDED_SQUARE) // 圆角方形 .onChange((value: boolean) { console.info(方形Checkbox状态${value}) }) Text(圆角方形多选框).fontSize(16) } // 3. 自定义颜色组合 Flex({ alignItems: ItemAlign.Center }) { Checkbox({ name: colorCheckbox }) .select(true) .selectedColor(#36D399) // 绿色选中 .unselectedColor(#666666) .mark({ strokeColor: Color.Black, // 黑色对勾 strokeWidth: 3, size: 18 }) .shape(CheckBoxShape.CIRCLE) Text(自定义配色多选框).fontSize(16) } // 4. 多选组示例 Text(多选组独立选择).fontSize(18).fontWeight(FontWeight.Medium) Flex({ wrap: FlexWrap.Wrap }) { ForEach([0, 1, 2], (index: number) { Flex({ alignItems: ItemAlign.Center }) { Checkbox({ name: check${index} }) .select(this.checkList[index]) .selectedColor(#007DFF) .unselectedColor(#999) .mark({ strokeColor: Color.White }) .onChange((value: boolean) { this.checkList[index] value console.info(选项${index}${value}) }) Text(选项 ${index 1}) } }) } // 5. 显示当前状态 Text(当前状态${this.isChecked ? 已选中 : 未选中}) .fontSize(16) .fontColor(this.isChecked ? #007DFF : #666666) .margin(10) } .padding(20) .width(100%) .height(100%) .backgroundColor(#F5F5F5) } }运行效果如图核心功能与样式详解1. 基础状态管理核心实现通过State装饰器定义布尔类型状态变量配合select()方法实现选中状态双向绑定通过onChange()方法监听状态变化并更新变量/执行业务逻辑。代码关键片段State isChecked: boolean false // 绑定状态 Checkbox({ name: circleCheckbox }) .select(this.isChecked) .onChange((value: boolean) { this.isChecked value // 更新状态变量 console.info(圆形Checkbox状态${value}) }) // 状态展示 Text(当前状态${this.isChecked ? 已选中 : 未选中}) .fontColor(this.isChecked ? #007DFF : #666666)关键说明name为Checkbox唯一标识多组件场景建议设置不同名称便于调试与业务区分onChange回调返回的value为最新选中状态true选中false未选中可在此实现日志打印、数据提交等业务逻辑。2. 形状定制圆形/圆角方形HarmonyOS 6API 11中Checkbox支持两种内置形状通过shape(CheckBoxShape)方法配置默认形状为圆形。形状枚举值枚举值形状效果适用场景CheckBoxShape.CIRCLE圆形多选框移动端、穿戴设备等轻量化界面CheckBoxShape.ROUNDED_SQUARE圆角方形多选框智慧屏、平板、表单页面等常规界面代码关键片段// 圆形默认 .shape(CheckBoxShape.CIRCLE) // 圆角方形 .shape(CheckBoxShape.ROUNDED_SQUARE)3. 全维度颜色定制Checkbox支持选中/未选中组件颜色对勾颜色的精细化定制满足不同UI设计风格的需求颜色值支持十六进制#RRGGBB、Color内置常量Color.White等格式。颜色配置项详解配置项作用示例值selectedColor选中时组件的背景色#007DFF鸿蒙蓝、#36D399绿色、Color.RedunselectedColor未选中时组件的边框色#999999深灰色、#CCCCCC浅灰色、Color.Greymark.strokeColor对勾的绘制颜色Color.White、#000000黑色自定义配色示例Checkbox({ name: colorCheckbox }) .select(true) .selectedColor(#36D399) // 绿色选中背景 .unselectedColor(#666666) // 深灰色未选中边框 .mark({ strokeColor: Color.Black, // 黑色对勾 })4. 对勾样式精细化调整通过mark()方法可自定义对勾的粗细与尺寸配合颜色配置实现对勾样式的全定制满足不同界面的视觉比例需求。对勾配置项详解配置项类型作用建议值strokeWidthnumber对勾的线条粗细单位px2-3px适配常规组件尺寸sizenumber对勾的整体尺寸单位px16-18px与Checkbox组件比例匹配代码关键片段.mark({ strokeColor: Color.White, // 对勾颜色 strokeWidth: 2, // 对勾粗细 size: 16 // 对勾大小 })5. 多选项组合多选组通过State定义布尔数组、配合ForEach循环渲染可快速实现独立多选组功能每个选项的状态单独管理适用于筛选、多选项选择等场景。核心实现逻辑定义布尔数组checkList数组长度对应选项数量初始值为false未选中通过ForEach循环遍历数组为每个Checkbox绑定对应索引的数组元素onChange回调中更新对应索引的数组值实现单个选项状态独立管理。代码关键片段State checkList: boolean[] [false, false, false] // 3个选项的状态数组 Flex({ wrap: FlexWrap.Wrap }) { ForEach([0, 1, 2], (index: number) { // 遍历索引 Flex({ alignItems: ItemAlign.Center }) { Checkbox({ name: check${index} }) .select(this.checkList[index]) // 绑定对应索引的状态 .onChange((value: boolean) { this.checkList[index] value // 更新对应索引的状态 console.info(选项${index}${value}) }) Text(选项 ${index 1}) } }) }关键说明使用Flex({ wrap: FlexWrap.Wrap })实现选项自动换行适配不同屏幕宽度为每个Checkbox设置唯一namecheck0/check1/check2便于调试与业务区分。总结版本兼容本文档所有样式与属性均基于API 11HarmonyOS 6低版本需做兼容处理状态管理State为组件内状态跨组件传参可使用Link/Provide/Consume等装饰器颜色规范自定义颜色时建议遵循HarmonyOS设计规范保证不同设备上的显示一致性性能优化多选项如超过10个场景建议使用懒加载避免一次性渲染过多组件影响性能。如果这篇文章对你有帮助欢迎点赞、收藏、关注你的支持是持续创作的动力