鸿蒙:用Toggle组件实现选择框、开关样式

1、前言

在鸿蒙app开发过程中,我们经常会遇到让用户勾选选项、打开开关等操作。那么用Toggle组件就可以实现这些功能。

2、参考文档

https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-components-togglehttps://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-components-toggle

3、核心代码

复制代码
 // 创建开关类型的Toggle组件
      // type: ToggleType.Switch 表示是开关样式
      // isOn: $$this.isOn 表示双向绑定isOn状态,开关操作会同步更新isOn的值
      Toggle({ type: ToggleType.Switch, isOn: $$this.isOn })
        .selectedColor('#007DFF')    // 设置开关选中时的颜色(蓝色)
        .switchPointColor('#FFFFFF') // 设置开关滑块的颜色(白色)


      // 创建复选框类型的Toggle组件
      // type: ToggleType.Checkbox 表示是复选框样式
      // 同样双向绑定isOn状态,与开关组件共享同一状态
      Toggle({ type: ToggleType.Checkbox, isOn: $$this.isOn })
        .selectedColor('#007DFF')    // 设置复选框选中时的颜色(蓝色)
        .switchPointColor('#FFFFFF') // 设置复选框内部图标的颜色(白色)

4、运行效果

5、完整代码

复制代码
@Entry
@ComponentV2
struct Index {
  // @Local 装饰器声明这是一个组件内部状态变量,用于管理组件的UI状态
  // isOn 表示开关状态,true为打开,false为关闭,初始值为true
  @Local isOn: boolean = true;

  // @Builder 装饰器声明这是一个UI构建函数,用于封装可复用的UI片段
  // 作用:根据isOn状态显示"打开"或"关闭"文本
  @Builder
  toggleBuilder() {
    Text(this.isOn ? '打开' : '关闭')  // 三元表达式:根据isOn状态切换显示文本
      .fontSize(24)                     // 设置字体大小为24
      .fontWeight(FontWeight.Bold) // 设置字体为粗体
  }

  // build方法是组件的UI构建入口,用于定义组件的布局和内容
  build() {
    // Column为垂直布局容器,{ space: 20 }表示子组件之间的垂直间距为20
    Column({ space: 20 }) {
      // 调用toggleBuilder构建函数,显示当前状态文本(上方)
      this.toggleBuilder()

      // 创建开关类型的Toggle组件
      // type: ToggleType.Switch 表示是开关样式
      // isOn: $$this.isOn 表示双向绑定isOn状态,开关操作会同步更新isOn的值
      Toggle({ type: ToggleType.Switch, isOn: $$this.isOn })
        .selectedColor('#007DFF')    // 设置开关选中时的颜色(蓝色)
        .switchPointColor('#FFFFFF') // 设置开关滑块的颜色(白色)

      // 再次调用toggleBuilder构建函数,显示当前状态文本(下方)
      this.toggleBuilder()

      // 创建复选框类型的Toggle组件
      // type: ToggleType.Checkbox 表示是复选框样式
      // 同样双向绑定isOn状态,与开关组件共享同一状态
      Toggle({ type: ToggleType.Checkbox, isOn: $$this.isOn })
        .selectedColor('#007DFF')    // 设置复选框选中时的颜色(蓝色)
        .switchPointColor('#FFFFFF') // 设置复选框内部图标的颜色(白色)

    }
    .width('100%') // 设置Column宽度为100%父容器宽度
    .height('100%') // 设置Column高度为100%父容器高度
    .justifyContent(FlexAlign.Center) // 设置子组件在垂直方向居中对齐
  }
}

觉得有帮助,可以点赞或收藏

相关推荐
zd2005721 分钟前
我给x86版本开源鸿蒙系统装上了 Homebrew,还塞了整个 Node 和 opencode 进去
华为·开源·harmonyos
song5018 分钟前
React Native for OpenHarmony 实战:三方库 react-native-popup-menu 的鸿蒙化适配指南
css·深度学习·react native·react.js·transformer·harmonyos
打工仔折腾 AI21 分钟前
鸿蒙版ToDesk远控实测:蓝牙键鼠、双模式鼠标与跨端剪贴板怎么用
后端·python·华为·性能优化·计算机外设·harmonyos·ai agent 实战
特立独行的猫a35 分钟前
仓颉语言实现强大的Modbus调试工具Modbus Poll:cj-tauri项目介绍与实战
harmonyos·tauri·modbus·仓颉·modbus poll
yumgpkpm12 小时前
(CDH 7)CDP Private Cloud Base 7.3.1 → Acceldata ODP 3.3.6.4 引擎迁移风险评估表
服务器·人工智能·hadoop·python·华为·zookeeper·hbase
m0_7381858212 小时前
Flutter 鸿蒙化实战:screen_protector 适配 OpenHarmony,防截屏/防泄露
flutter·华为·harmonyos·鸿蒙
xixixi7777713 小时前
解读|华为星河 AI 三层安全围栏:以 AI 守护 AI,重构智算中心 Token 生产纵深防御体系
人工智能·安全·web安全·华为·提示词注入·agent安全·模型投毒
CV工程师丁Sir13 小时前
# ArkWeb 手记 03|本地资源加载与 $rawfile 路径踩坑
harmonyos
yumgpkpm18 小时前
Acceldata ODP 3.3.6.4 vs CDP Private Cloud Base 7.3.2 对比
大数据·运维·服务器·hadoop·华为·zookeeper·hbase