#鸿蒙通关秘籍# 如何在HarmonyOS中实现自定义的长按或右键菜单功能?

HarmonyOS
2024-12-11 10:53:44
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
第一小趴菜

使用bindContextMenu可以实现菜单弹出效果

​bindContextMenu​为组件绑定弹出式菜单,通过长按或右键点击触发。完整示例和效果如下。

示例如下

@Entry
@Component
struct BindContextMenuDemo {
  private menu: string[] = ['保存图片', '收藏', '搜一搜'];
  private pics: Resource[] = [$r('app.media.icon_1'), $r('app.media.icon_2')];

  // 通过@Builder构建自定义菜单项
  @Builder myMenu() {
    Column() {
      ForEach(this.menu, (item: string) => {
        Row() {
          Text(item)
            .fontSize(18)
            .width('100%')
            .textAlign(TextAlign.Center)
        }
        .padding(15)
        .border({ width: { bottom: 1 }, color: 0xcccccc })
      })
    }
    .width(140)
    .borderRadius(15)
    .shadow({ radius: 15, color: 0xf1f1f1 })
    .backgroundColor(0xf1f1f1)
  }

  build() {
    Column() {
      Row() {
        Text('查看图片')
          .fontSize(20)
          .fontColor(Color.White)
          .width('100%')
          .textAlign(TextAlign.Center)
          .padding({ top: 20, bottom: 20 })
      }
      .backgroundColor(0x007dfe)

      Column() {
        ForEach(this.pics, (item: Resource) => {
          Row(){
            Image(item)
              .width('100%')
          }
          .padding({ top: 20, bottom: 20, left: 10, right: 10 })
          .bindContextMenu(this.myMenu, ResponseType.LongPress)
        })
      }
    }
    .width('100%')
    .alignItems(HorizontalAlign.Center)
  }
}
分享
微博
QQ
微信
回复
2024-12-13 15:25:40
相关问题
#鸿蒙通关秘籍#右键菜单咋配置?
282浏览 • 1回复 待解决