鸿蒙界面开发——组件(5):菜单Menu 绑定菜单

news2024/12/26 10:39:21

菜单组件Menu

Menu组件需和bindMenu或bindContextMenu方法配合使用,不支持作为普通组件单独使用。
Menu 以垂直列表形式显示的菜单。包含MenuItem、MenuItemGroup子组件。

Menu()作为菜单的固定容器,无参数。
MenuItem(value?: MenuItemOptions| CustomBuilder)
MenuItemGroup(value?: MenuItemGroupOptions)

Menu() {
  MenuItem({....})
  MenuItemGroup({ header: '小标题' }) {
    MenuItem({...})
    MenuItem({...})
    ...
  }
}

菜单和菜单项宽度计算规则:
布局过程中,期望每个菜单项的宽度一致。
若子组件设置了宽度,则以尺寸计算规则为准。
不设置宽度的情况:菜单组件会对子组件MenuItem、MenuItemGroup设置默认2栅格的宽度,若菜单项内容区比2栅格宽,则会自适应撑开。
设置宽度的情况:菜单组件会对子组件MenuItem、MenuItemGroup设置减去padding后的固定宽度。

MenuItem参数MenuItemOptions枚举说明
startIcon ResourceStr 否 item中显示在左侧的图标信息路径。
content ResourceStr 否 item的内容信息。
endIcon ResourceStr 否 item中显示在右侧的图标信息路径。
labelInfo ResourceStr 否 定义结束标签信息,如快捷方式Ctrl+C等。
builder CustomBuilder 否 用于构建二级菜单。
symbolStartIcon SymbolGlyphModifier 否 item中显示在左侧的HMSymbol图标信息路径。配置该项时,原先startIcon图标不显示。
symbolEndIcon SymbolGlyphModifier 否 item中显示在右侧的HMSymbol图标信息路径。配置该项时,原先endIcon图标不显示。

MenuItemGroup参数MenuItemGroupOptions对象说明
header ResourceStr | CustomBuilder 否 设置对应group的标题显示信息。
footer ResourceStr | CustomBuilder 否 设置对应group的尾部显示信息。

Menu 属性

除支持通用属性外,还支持以下属性:

  1. font(value: Font) 统一设置Menu中所有文本的尺寸。
  2. fontColor(value: ResourceColor)统一设置Menu中所有文本的颜色。
  3. radius(value: Dimension | BorderRadiuses)设置Menu边框圆角半径。默认值:2in1设备上默认值为8vp,其他设备上默认值为20vp。
    从API version 12开始,当水平方向两个圆角半径之和的最大值大于菜单宽度,或垂直方向两个圆角半径之和的最大值大于菜单高度时,菜单四个圆角均采用菜单默认圆角半径值。
  4. width(value: Length)设置Menu边框宽度,支持设置的最小宽度为64vp。
  5. menuItemDivider(options: DividerStyleOptions | undefined)设置menuItem分割线样式, 不设置该属性则不展示分割线。
    startMargin + endMargin 超过组件宽度后startMargin和endMargin会被置0。
    -strokeWidth:分割线的线宽。
    -color:分割线的颜色。
    -startMargin:分割线与menuItem侧边起端的距离。
    -endMargin:分割线与menuItem侧边结束端的距离。
  6. menuItemGroupDivider(options: DividerStyleOptions | undefined)
    设置menuItemGroup上下分割线的样式, 不设置该属性则默认展示分割线。
  7. subMenuExpandingMode(mode: SubMenuExpandingMode)
    设置Menu子菜单展开样式。
    SIDE_EXPAND 默认展开样式, 子菜单位于同一平面侧边展开。
    EMBEDDED_EXPAND 直接展开样式, 子菜单嵌于主菜单内展开。
    STACK_EXPAND 堆叠样式, 子菜单浮于主菜单上方展开。

MenuItem属性

除支持通用属性外,还支持以下属性:

  1. selected(value: boolean) 设置菜单项是否选中。
  2. selectIcon(value: boolean | ResourceStr | SymbolGlyphModifier)设置当菜单项被选中时,是否显示被选中的图标。
  3. contentFont(value: Font)设置菜单项中内容信息的字体样式。
  4. contentFontColor(value: ResourceColor)设置菜单项中内容信息的字体颜色。
  5. labelFont(value: Font)设置菜单项中标签信息的字体样式。
  6. labelFontColor(value: ResourceColor)设置菜单项中标签信息的字体颜色。

事件
onChange(callback: (selected: boolean) => void)当选中状态发生变化时,触发该回调。只有手动触发且MenuItem状态改变时才会触发onChange回调。

菜单控制——为组件绑定弹出式菜单

为组件绑定弹出式菜单,弹出式菜单以垂直列表形式显示菜单项,可通过长按、点击或鼠标右键触发。
在这里插入图片描述

bindMenu

给组件绑定菜单,点击后弹出菜单。弹出菜单项支持图标+文本排列和自定义两种功能。

bindMenu(content: Array<MenuElement> | CustomBuilder, options?: MenuOptions)
bindMenu(isShow: boolean, content: Array<MenuElement> | CustomBuilder, options?: MenuOptions)

isShow(11+) boolean 是 支持开发者通过状态变量控制显隐,默认值为false,menu弹窗必须等待页面全部构建才能展示,因此不能在页面构建中设置为true,否则会导致显示位置及形状错误,当前不支持双向绑定。
content Array | CustomBuilder 是 配置菜单项图标和文本的数组,或者自定义组件。
options MenuOptions 否 配置弹出菜单的参数。

Text('click for Menu')
  .bindMenu([
     {
       value: 'Menu1',
       action: () => {console.info('handle Menu1 select')}
     },
     {
       value: 'Menu2',
       action: () => {console.info('handle Menu2 select')}
     },
     ...
   ])

MenuElement包含
value ResourceStr 是 菜单项文本。
icon ResourceStr 否 菜单项图标。
enabled boolean 否 菜单条目是否可进行交互。默认值:true, 菜单条目可以进行交互。
action () => void 是 点击菜单项的事件回调。
symbolIcon SymbolGlyphModifier 否 设置菜单项图标。通过Modifier配置菜单项图标,配置该项时,原icon图标不显示。

MenuOptions继承自ContextMenuOptions。
title ResourceStr 否 菜单标题。仅在content设置为Array 时生效。
showInSubWindow boolean 否 是否在子窗口显示菜单。默认值:2in1设备为true,其他设备为false。

bindContextMenu

给组件绑定菜单,触发方式为长按或者右键点击,弹出菜单项需要自定义。

bindContextMenu(content: CustomBuilder, responseType: ResponseType, options?: ContextMenuOptions)
bindContextMenu(isShown: boolean, content: CustomBuilder, options?: ContextMenuOptions)

content CustomBuilder 是 自定义菜单内容构造器。
responseType ResponseType 是 菜单弹出条件,长按或者右键点击。不支持鼠标长按。
options ContextMenuOptions 否 配置弹出菜单的参数。
isShown boolean 是 支持开发者通过状态变量控制显隐,默认值为false。menu需要在页面全部构建完成后才能弹窗展示,如果在页面构建前或构建中设置为true,可能导致显示位置及形状错误、无法正常弹出显示等问题。当前不支持双向绑定,不支持长按触发拖拽。
sShown为true,弹出菜单。isShown为false,隐藏菜单。弹出菜单项需要自定义。

ContextMenu.close关闭菜单

static close()可以通过该方法在页面范围内关闭通过bindContextMenu给组件绑定的菜单。

 .bindContextMenu(this.MenuBuilder, ResponseType.LongPress)
 .onDragStart(()=>{
   // 拖拽时关闭菜单
   ContextMenu.close()
 })

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2108543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DC-DC开关稳压电路

前面所讲的线性稳压电路具有结构简单、调节方便、输出电压稳定性强、纹波电压小等优点。但是&#xff0c;由于调整管始终工作在放大状态&#xff0c;自身功耗较大&#xff0c;故效率较低&#xff0c;甚至仅为30%~40%。而且&#xff0c;为了解决调整管散热问题&#xff0c;必须安…

Linux-(系统启动、用户管理)

目录 前言 关机&重启命令 基本介绍 注意细节 用户登录和注销 注意&#xff1a; 用户管理 基本介绍 添加用户 指定/修改密码 删除用户 查询用户信息 切换用户 查看当前用户登录用户 用户组 新增组 删除组 查看所有组 修改用户所属组 创建用户时指定用户…

如何在车载中控上进行UI自动化测试

说到车载测试&#xff0c;很多人都很好奇&#xff0c;车载中控是否需要UI自动化测试&#xff0c;从市场反馈来说&#xff0c;在6-7年之前的车载中控测试就已经介入UI自动化测试&#xff0c;那时候还是使用javaUIautomator框架。现在大部分都已经更新为PythonAppium框架进行自动…

Fiddler安卓设备抓包基础

Fiddler安卓设备抓包基础 一、下载二、Fiddler设置三、安卓设备设置四、Fiddler工具页面介绍 一、下载 工具名称&#xff1a;Fiddler 下载地址&#xff1a;官网 二、Fiddler设置 1.打开Fiddler 2.打开Tools > Options > Connections进行如下设置&#xff0c;Fiddler…

【C++ Primer Plus习题】10.7

问题: 解答: main.cpp #include <iostream> #include "plorg.h" using namespace std;int main() {plorg p("Plorga");p.showCI();p.setCI(10);p.showCI();return 0; }plorg.h #pragma once#define SIZE 19 class plorg { private:char m_fillName…

allegro约束管理器的学习

1&#xff09;差分线neck mode的使用 2&#xff09;走线区域规则和间距区域规是不同的 3&#xff09;创建区域规则的步骤 分为三个步骤 1在spacing中创建一个区域规则&#xff1b; 2在region中把区域规则赋予它&#xff1b; 3在pcb中&#xff0c;创建一个constraint region sha…

中国次生林林龄分布数据(2020年)

次生林年龄的全国分布对于了解中国森林生态系统和碳储量至关重要。该数据集采用了一种数据驱动的方法&#xff0c;用于提高植被变化跟踪器和连续变化检测与分类算法的性能&#xff0c;通过使用变化检测算法和密集的陆地卫星时间序列来确定次生林的建立时间。 该数据集主要以tif…

实践reflex:以Personalized Sales个人销售网站为例

reflex 是一个使用纯Python构建全栈web应用的库&#xff0c;但是需要使用node&#xff0c;所以你懂的。 官网&#xff1a;Reflex Web apps in Pure Python 手册&#xff1a;Introduction Pynecone: Pynecone 是一个全栈 Python 框架&#xff0c;可以使用纯 Python 构建高性…

2024级新生数组字符串专题题解

一、题解&#xff1a; 1.A-[NOIP2005]校门外的树_24级新生数组字符串训练题 (nowcoder.com) 这题常见的解法有两种&#xff1a; 第一种是这道题我们可以直接按照题目意思枚举 #include<bits/stdc.h> #define int long long using namespace std;int road[10010];sig…

HarmonyOS开发实战( Beta5.0)DevEco Device Tool开发环境搭建实践

通常在嵌入式开发中&#xff0c;很多开发者习惯于使用Windows进行代码的编辑&#xff0c;比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段&#xff0c;大部分的开发板源码还不支持在Windows环境下进行编译&#xff0c;如Hi3516、Hi3518系列开发板。…

Django+Vue3前后端分离学习(五)(前端登录页面搭建)

1、如果需要使用组合式API&#xff0c;需要安装插件&#xff1a; npm install vite-plugin-vue-setup-extend --save-dev 在vite.config.js里配置&#xff1a; 首先导入: import VueSetupExtend from vite-plugin-vue-setup-extend 添加&#xff1a; 2、创建login.vue 然…

C语言刷题日记(附详解)(4)

一、选填部分 第一题: 下面四个选项中&#xff0c;均是不合法的用户标识符的选项是( ) A. A P_0 do B. float la0 _A C. b-a sizeof int D. b_a temp _123 思路提示&#xff1a;题中所问的是"不合法"的"用户标识符"&#xff0c;要记得&#xff0c;C…

4区升3区的“灌水王者”!7个月还未送审被人评为“小牌大耍”?急投学者注意

【SciencePub学术】本期&#xff0c;给大家介绍的是1本计算机类的SCI——《JOURNAL OF SUPERCOMPUTING》。 优点VS缺点 • 期刊投稿难度较小&#xff0c;接受率较高 • 国人投稿友好&#xff0c;且已经稳定检索了28年 • 去年由中科院4区升为3区 • 普遍反映这本期刊审稿周期…

项目总体框架

一.后端&#xff08;包装servlet&#xff09; 使用BaseServlet进行请求的初步处理&#xff08;利用继承进行执行这个&#xff09; 在BaseServlet中 处理请求的类型找到对象的方法&#xff0c;并使用注解找到参数名&#xff0c;执行参数自动注入。 package com.csdn.controlle…

JAVA数据导出为Excel

目录 一、导入依赖 二、使用的相关类 1、XSSFWorkbook 构造方法 创建表 操作表 保存表 样式和格式 日期处理 密码保护 其他 2、XSSFSheet 获取属性和信息 行操作 列操作 表的属性 合并单元格 保护表 页眉和页脚 注释 其它 3、XSSFRow 获取属性和信息 单…

Redis 常用命令总结

文章目录 目录 文章目录 1 . 前置内容 1.1 基本全局命令 KEYS EXISTS ​编辑 DEL EXPIRE TTL TYPE 1.2 数据结构和内部编码 2. String类型 SET GET MGET MSET SETNX INCR INCRBY DECR DECYBY INCRBYFLOAT 命令小结 内部编码 3 . Hash 哈希类型 HSET …

如何用python远程测试连接redis服务器

前提条件 A&#xff1a;操作机&#xff08;操作系统不限&#xff09; B&#xff1a;装有redis的服务器&#xff08;linux系统&#xff09; 而且需要配置redis服务器允许外部连接。这个一般是在redis的配置文件里修改相关选项。redis.conf或者6379.conf就是redis的配置文件 b…

备考MS office 二级

word 1、分页符 布局-分隔符-分节符-下一页&#xff1a;第二张可以不同纸张大小、方向等 2、调整宽度&#xff1a;新文字宽度&#xff08;字符宽度&#xff09; 中文版式 3、字符间距 4、文本转换为表格 1、把 || 替换为逗号&#xff0c;方便查找 5、首字下沉 插入 - 首字下沉…

ActiveMQ 反序列化漏洞复现(CVE-2015-5254)

一、漏洞前言 Apache ActiveMQ是美国阿帕奇&#xff08;Apache&#xff09;软件基金会所研发的一套开源的消息中间件&#xff0c;它支持Java消息服务&#xff0c;集群&#xff0c;Spring Framework等。Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞&#xff0c;该漏洞源于程…

一篇python常见的Pandas的数据功能的使用

当我们学习了如何使用 Pandas 进行数据的导入与导出,这为我们后续的数据处理打下了基础.此次我们将重点讨论数据选择与过滤.通过掌握这一部分的知识,你将能够轻松地从复杂的数据集中提取出所需的信息.接下来,我们将通过一些实例来逐步了解这些操作. 数据选择 数据选择主要是针…