HarmonyOS7 多位置触发菜单:用 bindMenu 做好触发位置
📅 2026/7/19 15:23:10
👁️ 次浏览
文章目录前言适合放在哪些页面里页面结构拆一下核心逻辑说明完整代码最后提醒一句前言这组案例开始进入选择类和调节类组件写业务页面时会经常遇到。这个案例围绕不同位置触发菜单展开重点不是把属性背下来而是弄清楚状态、组件和用户操作之间怎么连起来。这篇我会把重点放在布局对比上尽量说清楚它在真实页面里有什么用。适合放在哪些页面里如果把它放到真实项目里常见位置可能是设置页、筛选页、编辑页或者某个需要快速操作的工具面板。用户点一下、选一下、拖一下页面就应该给出明确反馈。维度内容案例主题不同位置触发菜单核心 APIbindMenu使用场景触发位置文章侧重点布局对比页面结构拆一下代码结构可以按三层读外层负责页面背景和留白中间卡片承载主要内容内部组件处理具体交互。这样的层级不花哨但维护起来比较舒服。我比较推荐先把状态字段命名清楚。选中项、开关状态、滑块数值最好都能从名字看出用途比随手写flag、value后面省心很多。核心逻辑说明先看一段连续代码基本能判断这个案例的运行方式。它包含入口组件、状态字段以及一部分核心 UI。EntryComponentstruct PositionedMenuTriggers{StateisShow:booleantrueStateisMenuL:booleanfalseStateisMenuR:booleanfalseStateisMenuB:booleanfalsebuild(){Column(){if(this.isShow){Column({space:14}){Text(不同位置触发菜单).fontSize(14).fontColor(THEME_COLOR).fontWeight(600)Row(){Button(左侧菜单).fontSize(13).fontColor(#FFFFFF).backgroundColor(#FF6B6B).borderRadius(8).height(36).padding({left:12,right:12}).onClick((){this.isMenuLtrue}).bindMenu(this.isMenuL,[这段代码可以拆成几块看State保存当前页面状态用户操作之后会触发 UI 更新。bindMenu是案例的关键入口真正的行为通常由它和事件回调一起完成。布局属性服务于业务表达选中、禁用、拖动这些状态最好都能在视觉上看出来。完整代码下面是整理后的完整代码。组件名已经改成PositionedMenuTriggers共享颜色也内置到当前文件里单独复制出来读会更方便。constPAGE_BG_COLOR:string#F5F6FAconstCARD_BG_COLOR:string#FFFFFFconstTHEME_COLOR:string#4D96FFconstSUBTEXT_COLOR:string#8A8A8AEntryComponentstruct PositionedMenuTriggers{StateisShow:booleantrueStateisMenuL:booleanfalseStateisMenuR:booleanfalseStateisMenuB:booleanfalsebuild(){Column(){if(this.isShow){Column({space:14}){Text(不同位置触发菜单).fontSize(14).fontColor(THEME_COLOR).fontWeight(600)Row(){Button(左侧菜单).fontSize(13).fontColor(#FFFFFF).backgroundColor(#FF6B6B).borderRadius(8).height(36).padding({left:12,right:12}).onClick((){this.isMenuLtrue}).bindMenu(this.isMenuL,[{value:左选项1,action:(){}},{value:左选项2,action:(){}},{value:左选项3,action:(){}},],{onDisappear:(){this.isMenuLfalse}})Blank()Button(右侧菜单).fontSize(13).fontColor(#FFFFFF).backgroundColor(THEME_COLOR).borderRadius(8).height(36).padding({left:12,right:12}).onClick((){this.isMenuRtrue}).bindMenu(this.isMenuR,[{value:右选项1,action:(){}},{value:右选项2,action:(){}},{value:右选项3,action:(){}},],{onDisappear:(){this.isMenuRfalse}})}.width(100%)Divider().strokeWidth(1).color(#EEEEEE)Row(){Text(底部菜单).fontSize(14).fontColor(THEME_COLOR)}.width(100%).height(80).backgroundColor(#F8F8F8).borderRadius(10).justifyContent(FlexAlign.Center).onClick((){this.isMenuBtrue}).bindMenu(this.isMenuB,[{value:底部选项A,action:(){}},{value:底部选项B,action:(){}},{value:底部选项C,action:(){}},],{onDisappear:(){this.isMenuBfalse}})Text(菜单弹出位置跟随触发元素).fontSize(12).fontColor(SUBTEXT_COLOR)}.width(100%).padding(16).backgroundColor(CARD_BG_COLOR).borderRadius(12)}Text(多位置触发菜单Menu 弹出菜单左右/底部不同位置触发).fontSize(12).fontColor(SUBTEXT_COLOR).margin({top:12})}.width(100%).height(100%).backgroundColor(PAGE_BG_COLOR).padding(16)}}最后提醒一句继续扩展的话我会把静态选项抽成接口返回的数据再补上空状态和异常状态。示例页面先把核心交互跑通就够了到了业务页面状态边界才是真正容易出问题的地方。
Single主题社区贡献指南:如何参与开源项目开发 【免费下载链接】Single 🎈 一个简洁大气,含夜间模式的 Typecho 博客主题 项目地址: https://gitcode.com/gh_mirrors/si/Single
Single是一个简洁大气且含夜间模式的Typecho博客主题&am…
📅 2026/7/19 15:23:10
从点云到网格:AtlasNet中Poisson重建与O-CNN算法原理解析 【免费下载链接】AtlasNet This repository contains the source codes for the paper "AtlasNet: A Papier-Mch Approach to Learning 3D Surface Generation ". The network is able to synthes…
📅 2026/7/19 15:23:10
Ansible for Kubernetes容器构建秘籍:不使用Dockerfile的Apache Solr容器构建方案 【免费下载链接】ansible-for-kubernetes Ansible and Kubernetes examples from Ansible for Kubernetes Book 项目地址: https://gitcode.com/gh_mirrors/an/ansible-for-kubern…
📅 2026/7/19 15:22:09
Nemo Skills安全最佳实践:确保LLM评估的安全性和可靠性 【免费下载链接】Skills A project to improve skills of large language models 项目地址: https://gitcode.com/gh_mirrors/ne/Skills
在当今AI快速发展的时代,大型语言模型(LLM)的评估工…
📅 2026/7/19 23:29:32
Vim-wordy终极指南:10个技巧提升你的写作质量 【免费下载链接】vim-wordy Uncover usage problems in your writing 项目地址: https://gitcode.com/gh_mirrors/vi/vim-wordy
想要写出更专业、更清晰的英文内容吗?🤔 Vim-wordy是你的终…
📅 2026/7/19 23:29:32
Traquer高级技巧:自定义事件录制与DOM变化追踪实战 【免费下载链接】traquer Records and reproduces users in-page behavior 项目地址: https://gitcode.com/gh_mirrors/tr/traquer
Traquer是一款强大的用户行为录制与回放工具,能够记录网页中的…
📅 2026/7/19 23:29:32
Flix架构原理解析:Provider与Node设计模式深度剖析 【免费下载链接】Flix iOS reusable form library in Swift. 项目地址: https://gitcode.com/gh_mirrors/fli/Flix
想要快速构建iOS动态表单界面吗?Flix为你提供了一个终极解决方案!…
📅 2026/7/19 23:29:32
第一章 对称加密:单一密钥的快速加密体系1.1 设计目标对称加密旨在解决数据传输过程中的机密性(Confidentiality)问题,即确保未经授权的第三方无法解读通信内容。1.2 工作机制对称加密采用单一密钥完成加密与解密操作。发送方使用…
📅 2026/7/19 23:29:32
你是不是也遇到过这种情况?网站做了半天,排名死活上不去,钱烧了不少,连个水花都没有。别急着怪算法,先看看你的地基打歪没。这篇东西,不整虚的,就聊聊我踩过的坑和真金白银买来的教训。刚入行那会儿,我觉得SEO就是堆关键词。我在后台狂填词,以为这样就能霸屏。结果呢?…
📅 2026/7/19 23:28:31
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/19 0:00:51
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/19 0:00:51
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/19 0:00:51
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/19 0:00:51
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/19 0:00:51
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/19 0:00:51
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/19 7:02:11
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/19 17:02:37
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/19 5:02:03