HarmonyOS6 enabled 通用属性使用指南

HarmonyOS6 enabled 通用属性使用指南

文章目录

本文基于 API 10+ 兼容版代码,详细讲解 enabled 属性的语法、适配方案及在 Button/Toggle/Text/Image 等组件中的实战用法,严格对齐华为官方文档规范,同时解决低版本 API 的属性兼容性问题。

1. 核心特性

特性说明
适用版本核心适配 API 10+(Stage 模型);API 11+ 可替换为 enable 属性
支持组件可交互组件(Button/Toggle/Input 等)原生支持 enabled;纯展示组件(Text/Image)需手动适配
核心能力enabled(true):组件启用(默认),支持所有交互;enabled(false):组件禁用,交互能力失效
兼容方案低版本无 disabledColor/clickable 等属性时,通过「状态变量 + 条件判断」实现等效效果
无侵入性不改变组件原有结构,仅通过状态控制交互行为,适配性强

2. enabled 完整参数说明

2.1 基础语法(API 10+)

enabled(value:boolean)
  • 参数值true(启用,默认)/ false(禁用)
  • 核心行为
    • 启用态:组件可点击、触发 onClick/onChange 等事件;
    • 禁用态:组件不可交互,事件回调不触发(Button/Toggle 等原生组件自动生效)。

2.2 高/低版本属性对照表

功能API 10+ 写法API 11+ 写法说明
控制启用/禁用.enabled(boolean).enable(boolean)核心属性名差异,功能完全一致
禁用态背景色手动通过 backgroundColor 控制.disabledColor(string)API 11+ 新增专属属性
文本/图片可点击onClick 内条件判断.clickable(true) + .enable(boolean)API 11+ 新增 clickable 属性

3. 完整示例代码解析

3.1 代码结构说明

以下代码覆盖「全局启用/禁用」「独立组件控制」「多组件适配」等核心场景:

/** * enable(enabled) 通用属性最终兼容版 * 修复:disabledColor → 手动通过 enabled 状态控制背景色 * 适配 API 10+,零类型报错 */@Entry@Component struct EnableAttributeDemo {// 状态变量:控制全局启用/禁用状态@State isAllEnable:boolean=true;// 状态变量:单独控制Toggle组件启用状态@State isToggleEnable:boolean=true;build(){Column({ space:20}){// 标题区域Text('enable(enabled) 通用属性演示').fontSize(24).fontWeight(700).margin({ top:20});// 全局控制开关Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }){Text(`全局状态:${this.isAllEnable ?'启用':'禁用'}`).fontSize(16);// 切换全局启用/禁用状态的按钮Button(this.isAllEnable ?'点击禁用所有组件':'点击启用所有组件').backgroundColor(this.isAllEnable ?'#ff4d4f':'#007dff').fontColor('#ffffff').onClick(()=>{this.isAllEnable =!this.isAllEnable;});}// 分割线Divider().width('90%').margin({ top:10});// 1. Button组件(核心可交互组件)Text('1. Button 组件').fontSize(14).fontColor(0xcccccc).width('90%');Button('可点击按钮(受全局控制)').width('90%').height(44).enabled(this.isAllEnable)// API 10+ 正确属性:控制启用/禁用// 修复:移除 disabledColor,手动通过状态控制背景色.backgroundColor(this.isAllEnable ?'#007dff':'#cccccc').fontColor(this.isAllEnable ?'#ffffff':'#999999')// 禁用态文字色.onClick(()=>{// 兜底:仅启用态触发逻辑(防止低版本偶发穿透)if(this.isAllEnable){console.info('Button 被点击');}});// 2. Toggle组件(单独控制启用状态)Text('2. Toggle 组件(独立控制)').fontSize(14).fontColor(0xcccccc).width('90%');Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center}){Toggle({ type: ToggleType.Switch, isOn:false}).enabled(this.isToggleEnable)// API 10+ 正确属性.selectedColor('#007dff').switchPointColor('#ffffff').onChange((isOn)=>{if(this.isToggleEnable){console.info(`Toggle 状态:${isOn}`);}});Button(this.isToggleEnable ?'禁用Switch':'启用Switch').fontSize(12).backgroundColor(this.isToggleEnable ?'#ff4d4f':'#007dff').fontColor('#ffffff').onClick(()=>{this.isToggleEnable =!this.isToggleEnable;});}.width('90%');// 3. Text组件(可点击文本:替代 clickable + enabled)Text('3. Text 组件(可点击)').fontSize(14).fontColor(0xcccccc).width('90%');Text(this.isAllEnable ?'点击我(可交互)':'已禁用(不可点击)').fontSize(16).fontColor(this.isAllEnable ?'#007dff':'#999999').width('90%').textAlign(TextAlign.Center).padding(10).backgroundColor('#f5f5f5').borderRadius(8).onClick(()=>{if(this.isAllEnable){console.info('Text 被点击');}});// 4. Image组件(可点击图片:替代 clickable + enabled)Text('4. Image 组件(可点击)').fontSize(14).fontColor(0xcccccc).width('90%');Image($r('app.media.bg'))// 替换为本地图片名(media目录下).width('90%').height(150).borderRadius(8).backgroundColor('#eeeeee').onClick(()=>{if(this.isAllEnable){console.info('Image 被点击');}});// 图片状态提示Text(this.isAllEnable ?'图片可点击':'图片已禁用').fontSize(12).fontColor(0x999999).margin({ bottom:10});}.width('100%').padding(20).justifyContent(0);}}

运行效果如图:


点击最上面的按钮后:

3.2 关键代码解析

3.2.1 全局状态管控(核心逻辑)
@State isAllEnable:boolean=true;// 全局启用/禁用开关// 全局控制按钮Button(this.isAllEnable ?'点击禁用所有组件':'点击启用所有组件').onClick(()=>{this.isAllEnable =!this.isAllEnable;// 切换全局状态});
  • 通过 @State 装饰的布尔变量 isAllEnable 作为全局开关,统一控制 Button/Text/Image 组件的启用状态;
  • 控制按钮的文本和背景色随状态动态切换,提升用户视觉感知。
3.2.2 Button 组件(原生支持 enabled)
Button('可点击按钮(受全局控制)').enabled(this.isAllEnable)// 绑定全局启用状态.backgroundColor(this.isAllEnable ?'#007dff':'#cccccc')// 替代 disabledColor.fontColor(this.isAllEnable ?'#ffffff':'#999999').onClick(()=>{if(this.isAllEnable){// 兜底判断,防止低版本偶发穿透console.info('Button 被点击');}});
  • 核心适配:API 10+ 无 disabledColor,通过 backgroundColor 绑定 isAllEnable 实现禁用态灰色背景;
  • 兜底逻辑:即使低版本系统偶发「禁用态仍可点击」,if 判断也能保证业务逻辑不执行。
3.2.3 Toggle 组件(独立状态控制)
@State isToggleEnable:boolean=true;// 独立控制ToggleToggle({ type: ToggleType.Switch, isOn:false}).enabled(this.isToggleEnable)// 绑定独立状态.onChange((isOn)=>{if(this.isToggleEnable){// 仅启用态触发日志console.info(`Toggle 状态:${isOn}`);}});
  • Toggle 组件单独使用 isToggleEnable 控制状态,不受全局开关影响,适用于「局部禁用」场景;
  • enabled(false) 后,Switch 滑块无法滑动,原生禁用效果无需额外适配。
3.2.4 Text/Image 组件(手动适配禁用)
// Text组件Text(this.isAllEnable ?'点击我(可交互)':'已禁用(不可点击)').onClick(()=>{if(this.isAllEnable){// 仅启用态执行逻辑console.info('Text 被点击');}});// Image组件Image($r('app.media.bg')).onClick(()=>{if(this.isAllEnable){// 仅启用态执行逻辑console.info('Image 被点击');}});
  • API 10+ 中 Text/Image 无 enabled/clickable 属性,通过 onClick 内的 if 判断实现「禁用不可点击」;
  • 文本内容/颜色随状态切换,明确告知用户当前交互状态。

总结

  1. enabled(API 10+)/enable(API 11+)是控制组件交互状态的核心属性,false 可禁用组件所有交互能力。
  2. API 10+ 需通过「状态变量 + 条件判断」替代 disabledColor/clickable 等高版本属性,实现等效效果。
  3. 可交互组件(Button/Toggle)优先使用 enabled 原生属性,纯展示组件(Text/Image)通过 onClick 内的条件判断适配。
  4. 全局状态变量 + 独立组件控制结合,可灵活实现「批量禁用」和「局部禁用」场景,适配各类业务需求。
如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力!

Read more

Stable Diffusion 3.5发布:图像质量与社区友好双提升

Stable Diffusion 3.5-FP8:当高质量生成遇上高效部署 在文生图模型的赛道上,性能与可用性之间的拉锯战从未停止。几年前,我们还在为能否让模型稳定输出一张不崩坏的文字海报而头疼;如今,Stability AI 发布的 Stable-Diffusion-3.5-FP8,已经能以近乎无损的质量、仅需12GB显存的代价,生成包含精确排版和复杂语义的高分辨率图像。 这不只是参数量或架构的堆叠升级,而是一次真正面向落地场景的工程突破——它把原本属于高端实验室的生成能力,带进了普通开发者的笔记本电脑里。 从“争议闭源”到“社区回归”:SD3.5 的战略转向 回顾去年 SD3 初发布时的情景,不少开发者对新许可条款感到寒心:商用限制严苛,连微小盈利项目都可能踩线。结果是社区活跃度骤降,Hugging Face 上的衍生模型增长几乎停滞。 但这次不一样。 Stable Diffusion 3.5 直接宣布:研究用途、非商业应用、年收入低于100万美元的小型商业项目均可免费使用。这一政策迅速点燃了生态热情,短短一周内,

By Ne0inhk

3分钟变身AI绘画大师:SDXL Prompt Styler如何让你的提示词拥有魔法?

3分钟变身AI绘画大师:SDXL Prompt Styler如何让你的提示词拥有魔法? 【免费下载链接】sdxl_prompt_styler 项目地址: https://gitcode.com/gh_mirrors/sd/sdxl_prompt_styler 在AI绘画的世界里,你是否也曾遇到这样的困境:明明脑海中已经有了清晰的画面,却无法用文字精准传达给AI?🤔 别担心!今天要介绍的SDXL Prompt Styler就像一位神奇的翻译官,能把你的创意灵感转化为AI能理解的艺术语言,让你的作品瞬间提升几个level! 为什么你的AI绘画总差一口气? 想象一下,你想画一个"森林中的未来帐篷",直接输入提示词可能得到一张普通图片。但如果给提示词加上"奥斯卡级视觉效果、专业摄影、超细节刻画"这样的魔法前缀,结果会怎样?✨ SDXL Prompt Styler就是这样一个给提示词"化妆"的神器,

By Ne0inhk
AIGC 异步回调系统实现

AIGC 异步回调系统实现

AIGC 异步回调系统实现 目录 * 一、系统概述 * 二、核心文件说明 * 三、数据流详解 * 四、配置说明 * 五、开发指南 * 六、运维指南 一、系统概述 1.1 背景与目标 本系统实现了一套通用的异步回调架构,用于处理 AIGC 服务(视频生成、图片生成等)的长耗时任务。 核心目标: * ✅ 快速响应:接收请求后立即返回 task_id,不阻塞 * ✅ 状态管理:通过数据库追踪任务状态 * ✅ 回调通知:完成后自动回调后端 * ✅ 统一管理:一套架构支持多种业务类型 * ✅ 可观测性:完整的时间戳链路追踪 1.2 两种回调地址(核心概念) 回调地址说明示例配置方式algorithm_callback_urlAIGC 供应商回调我们的地址https://algorithm.

By Ne0inhk
「源力觉醒 创作者计划」实测解析!文心一言 4.5 开源版本地化部署的表现与潜力

「源力觉醒 创作者计划」实测解析!文心一言 4.5 开源版本地化部署的表现与潜力

引言 2025 年 6 月 30 日,百度文心大模型 4.5 系列正式开源,并首发于 GitCode 平台!这一重磅消息在 AI 领域掀起了不小的波澜。作为国内最早布局大模型研发的企业之一,百度所推出的文心大模型目前已跻身国内顶级大模型行列,此次开源无疑将对各行各业产生深远影响,进一步加速大模型的发展进程。接下来,就让我们一同探究文心一言 4.5 开源版本地化部署的表现与潜力。 文章目录 * 引言 * 一、文心大模型 ERNIE 4.5 开源介绍 * 1.1 开源版本介绍 * 1.1 ERNIE 4.5 的主要特点和区别 * 二、文心ERNIE 4.5 技术解析 * 2.1

By Ne0inhk