HarmonyOS7 禁用单选项:用 enabled 做好不可选项
文章目录前言交互链路先理清数据和 UI 的对应关系关键实现细节完整代码可以继续扩展的方向前言这组案例开始进入选择类和调节类组件写业务页面时会经常遇到。这个案例围绕Radio 禁用状态展开重点不是把属性背下来而是弄清楚状态、组件和用户操作之间怎么连起来。这篇我会把重点放在状态边界上尽量说清楚它在真实页面里有什么用。交互链路先理清如果把它放到真实项目里常见位置可能是设置页、筛选页、编辑页或者某个需要快速操作的工具面板。用户点一下、选一下、拖一下页面就应该给出明确反馈。维度内容案例主题Radio 禁用状态核心 APIenabled使用场景不可选项文章侧重点状态边界数据和 UI 的对应关系代码结构可以按三层读外层负责页面背景和留白中间卡片承载主要内容内部组件处理具体交互。这样的层级不花哨但维护起来比较舒服。我比较推荐先把状态字段命名清楚。选中项、开关状态、滑块数值最好都能从名字看出用途比随手写flag、value后面省心很多。关键实现细节先看一段连续代码基本能判断这个案例的运行方式。它包含入口组件、状态字段以及一部分核心 UI。EntryComponentstruct DisabledRadioOptions{StateisShow:booleantrueStateselected:stringnormal1build(){Column(){if(this.isShow){Column(){Text(Radio 禁用状态).fontSize(16).fontWeight(FontWeight.Bold).margin({bottom:12})Text(可用选项).fontSize(13).fontColor(THEME_COLOR).margin({bottom:8})Column(){Row(){Radio({value:normal1,group:enabledGroup}).checked(this.selectednormal1).onChange((c:boolean){if(c)this.selectednormal1})这段代码可以拆成几块看State保存当前页面状态用户操作之后会触发 UI 更新。enabled是案例的关键入口真正的行为通常由它和事件回调一起完成。布局属性服务于业务表达选中、禁用、拖动这些状态最好都能在视觉上看出来。完整代码下面是整理后的完整代码。组件名已经改成DisabledRadioOptions共享颜色也内置到当前文件里单独复制出来读会更方便。constCOLOR_OPTIONS:Array{name:string;value:string}[{name:蓝色,value:#4D96FF},{name:绿色,value:#6BCB77},{name:黄色,value:#FFD93D},{name:红色,value:#FF6B6B},{name:紫色,value:#9B59B6},{name:橙色,value:#FFA500},{name:青色,value:#00BCD4},{name:粉色,value:#FF69B4},{name:灰蓝,value:#607D8B},{name:深色,value:#333333}]constPAGE_BG_COLOR:string#F5F6FAconstCARD_BG_COLOR:string#FFFFFFconstTHEME_COLOR:string#4D96FFconstSUBTEXT_COLOR:string#8A8A8AEntryComponentstruct DisabledRadioOptions{StateisShow:booleantrueStateselected:stringnormal1build(){Column(){if(this.isShow){Column(){Text(Radio 禁用状态).fontSize(16).fontWeight(FontWeight.Bold).margin({bottom:12})Text(可用选项).fontSize(13).fontColor(THEME_COLOR).margin({bottom:8})Column(){Row(){Radio({value:normal1,group:enabledGroup}).checked(this.selectednormal1).onChange((c:boolean){if(c)this.selectednormal1})Text(普通选项 A).fontSize(14).margin({left:8})}.margin({bottom:10})Row(){Radio({value:normal2,group:enabledGroup}).checked(this.selectednormal2).onChange((c:boolean){if(c)this.selectednormal2})Text(普通选项 B).fontSize(14).margin({left:8})}}Divider().margin({top:12,bottom:12})Text(禁用选项).fontSize(13).fontColor(COLOR_OPTIONS[8].value).margin({bottom:8})Row(){Radio({value:disabled1,group:enabledGroup}).enabled(false).checked(false)Text(已禁用的选项).fontSize(14).margin({left:8}).fontColor(SUBTEXT_COLOR)}.margin({bottom:10})Row(){Radio({value:disabled2,group:enabledGroup}).enabled(false).checked(true)Text(禁用但已选中).fontSize(14).margin({left:8}).fontColor(SUBTEXT_COLOR)}}.width(100%).padding(16).backgroundColor(CARD_BG_COLOR).borderRadius(12)}Text(禁用单选项Radio 禁用 - 单个选项和整体禁用).fontSize(12).fontColor(SUBTEXT_COLOR).margin({top:12})}.width(100%).height(100%).backgroundColor(PAGE_BG_COLOR).padding(16)}}可以继续扩展的方向继续扩展的话我会把静态选项抽成接口返回的数据再补上空状态和异常状态。示例页面先把核心交互跑通就够了到了业务页面状态边界才是真正容易出问题的地方。

相关新闻

具身智能的TVA-VLA双引擎架构(7)

具身智能的TVA-VLA双引擎架构(7)

前沿技术探索:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,是集深度强化学习(DRL)、卷积神经网络(CNN…

2026/10/17 15:26:09 阅读更多 →
C++实现OPC DA客户端:从COM原理到工业数据采集实战

C++实现OPC DA客户端:从COM原理到工业数据采集实战

1. 项目概述:为什么我们需要自己动手写一个OPC客户端?在工业自动化领域,数据是流淌的血液。无论是PLC的温度读数、机器人的运行状态,还是生产线的产量统计,这些数据都需要被采集、监控和分析。OPC(OLE for …

2026/10/17 15:34:44 阅读更多 →
Unity游戏翻译自动化:5大核心功能实现高效本地化工作流

Unity游戏翻译自动化:5大核心功能实现高效本地化工作流

1. 项目概述:为什么Unity游戏翻译需要自动化? 做独立游戏或者中小型手游的朋友,肯定都遇到过这个头疼的问题:游戏做完了,内容很棒,想上架海外市场多赚点钱,结果被翻译给卡住了。文本散落在各个P…

2026/10/17 15:36:48 阅读更多 →

最新新闻

MCP协议:解决AI模型调用外部服务的权限、状态与链路失控问题

MCP协议:解决AI模型调用外部服务的权限、状态与链路失控问题

简介:本资源是一份聚焦人工智能前沿连接标准的深度研究报告,面向AI开发者、研究人员及企业技术决策者,系统解析MCP(模型上下文协议)如何破解大模型与外部数据源、工具及开发环境之间的集成难题,推动AI从孤立…

2026/10/18 0:50:31 阅读更多 →
Unity项目接入APNs远程推送:证书配置、deviceToken获取与原生交互全流程

Unity项目接入APNs远程推送:证书配置、deviceToken获取与原生交互全流程

1. APNs远程推送接入前的关键认知:先搞懂一整条链路如果你的Unity项目要在iOS上接入远程推送,第一反应大概率是:这不就是申请个推送证书,后端调个接口,手机弹个通知吗?等真的动手才发现,Unity这…

2026/10/18 0:49:30 阅读更多 →
提高LCD屏幕刷新效率:基于TaoToken的ST7789驱动配置与LCD_Fill优化实践

提高LCD屏幕刷新效率:基于TaoToken的ST7789驱动配置与LCD_Fill优化实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:49:30 阅读更多 →
从零部署OpenClaw到阿里云ECS:打造云端AI助手的实践指南

从零部署OpenClaw到阿里云ECS:打造云端AI助手的实践指南

简介:基于阿里云ECS的OpenClaw一键部署方案,是一份面向无运维经验技术爱好者与开发者的实操指南,旨在帮助用户借助一台低配云服务器,在十五分钟内完成个性化AI助手的云端搭建与管理。整份指南以单个PDF文档呈现,压缩包…

2026/10/18 0:49:30 阅读更多 →
公钥密码学与伪随机数:密钥生成中的随机源与熵池管理

公钥密码学与伪随机数:密钥生成中的随机源与熵池管理

1. 从一个看似矛盾的问题说起公钥密码学里有一个特别反直觉的事实:你用来加密的密钥是公开的,任何人都能拿到,但别人依然解不开你的密文。这件事第一次接触会觉得像魔术,但支撑它的数学基础其实相当朴素——单向函数。正向计算容易…

2026/10/18 0:48:30 阅读更多 →
信息安全意识PPT设计:从知道到做到的行为转化工具包

信息安全意识PPT设计:从知道到做到的行为转化工具包

简介:本资源是一份面向全民网络安全素养提升的国家网络安全宣传周主题PPT课件,适用于企事业单位安全培训、高校通识教育及社区科普宣讲等场景。内容紧扣信息泄露风险防范与网络安全意识培养,系统梳理了网络安全四大核心特征(机密性…

2026/10/18 0:48:30 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →