在 OpenHarmony(ArkUI,eTS/ArkTS) 中,菜单(Menu)绑定事件主要有两种常见方式:组件右键/长按菜单( bindMenu ) 和 弹出菜单( bindContextMenu / Menu 组件)。下面按使用场景给你说明。
bindMenu 绑定菜单并响应事件(最常用)适用于:点击按钮、长按、右键等触发菜单。
@Entry
@Component
struct MenuExample {
build() {
Column() {
Button('点击菜单')
.bindMenu([
{
value: '复制',
action: () => {
console.info('点击了复制')
}
},
{
value: '粘贴',
action: () => {
console.info('点击了粘贴')
}
}
])
}
.width('100%')
.height('100%')
}
}
✅ action 就是菜单项的点击事件回调
bindContextMenu(右键 / 长按菜单)适用于:桌面右键、长按触发
Text('长按或右键我')
.bindContextMenu([
{
value: '删除',
action: () => {
console.info('删除操作')
}
}
], ResponseType.RightClick)
或者长按:
.bindContextMenu(menuItems, ResponseType.LongPress)
Menu 组件 + onClick(自定义菜单)如果你想完全自定义菜单 UI:
@Entry
@Component
struct CustomMenu {
@State showMenu: boolean = false
build() {
Column() {
Button('显示菜单')
.onClick(() => {
this.showMenu = true
})
if (this.showMenu) {
Menu() {
MenuItem('选项一')
.onClick(() => {
console.info('选项一')
this.showMenu = false
})
MenuItem('选项二')
.onClick(() => {
console.info('选项二')
this.showMenu = false
})
}
}
}
}
}
bindMenu 不需要手动控制显示/隐藏Menu 组件适合完全自定义 UI() => void如果你指的是 具体组件(List / Grid / 系统菜单 / JS UI),可以告诉我你的 OpenHarmony 版本和使用语言(eTS / ArkTS / JS),我可以给你更精确的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。