菜單(Menu)

2024-01-25 13:18 更新

Menu是菜單接口,一般用于鼠標(biāo)右鍵彈窗、點擊彈窗等。具體用法請參考Menu控制。

創(chuàng)建默認(rèn)樣式的菜單

菜單需要調(diào)用bindMenu接口來實現(xiàn)。bindMenu響應(yīng)綁定組件的點擊事件,綁定組件后手勢點擊對應(yīng)組件后即可彈出。

  1. Button('click for Menu')
  2. .bindMenu([
  3. {
  4. value: 'Menu1',
  5. action: () => {
  6. console.info('handle Menu1 select')
  7. }
  8. }
  9. ])

創(chuàng)建自定義樣式的菜單

當(dāng)默認(rèn)樣式不滿足開發(fā)需求時,可使用@Builder自定義菜單內(nèi)容。可通過bindMenu接口進(jìn)行菜單的自定義。

@Builder開發(fā)菜單內(nèi)的內(nèi)容

  1. @State select: boolean = true
  2. private iconStr: ResourceStr = $r("app.media.view_list_filled")
  3. private iconStr2: ResourceStr = $r("app.media.view_list_filled")
  4. @Builder
  5. SubMenu() {
  6. Menu() {
  7. MenuItem({ content: "復(fù)制", labelInfo: "Ctrl+C" })
  8. MenuItem({ content: "粘貼", labelInfo: "Ctrl+V" })
  9. }
  10. }
  11. @Builder
  12. MyMenu(){
  13. Menu() {
  14. MenuItem({ startIcon: $r("app.media.icon"), content: "菜單選項" })
  15. MenuItem({ startIcon: $r("app.media.icon"), content: "菜單選項" }).enabled(false)
  16. MenuItem({
  17. startIcon: this.iconStr,
  18. content: "菜單選項",
  19. endIcon: $r("app.media.arrow_right_filled"),
  20. // 當(dāng)builder參數(shù)進(jìn)行配置時,表示與menuItem項綁定了子菜單。鼠標(biāo)hover在該菜單項時,會顯示子菜單。
  21. builder: this.SubMenu.bind(this),
  22. })
  23. MenuItemGroup({ header: '小標(biāo)題' }) {
  24. MenuItem({ content: "菜單選項" })
  25. .selectIcon(true)
  26. .selected(this.select)
  27. .onChange((selected) => {
  28. console.info("menuItem select" + selected);
  29. this.iconStr2 = $r("app.media.icon");
  30. })
  31. MenuItem({
  32. startIcon: $r("app.media.view_list_filled"),
  33. content: "菜單選項",
  34. endIcon: $r("app.media.arrow_right_filled"),
  35. builder: this.SubMenu.bind(this)
  36. })
  37. }
  38. MenuItem({
  39. startIcon: this.iconStr2,
  40. content: "菜單選項",
  41. endIcon: $r("app.media.arrow_right_filled")
  42. })
  43. }
  44. }

bindMenu屬性綁定組件

  1. Button('click for Menu')
  2. .bindMenu(this.MyMenu)

創(chuàng)建支持右鍵或長按的菜單

通過bindContextMenu接口進(jìn)行菜單的自定義及菜單彈出的觸發(fā)方式:右鍵或長按。使用bindContextMenu彈出的菜單項是在獨立子窗口內(nèi)的,可顯示在應(yīng)用窗口外部。

  • @Builder開發(fā)菜單內(nèi)的內(nèi)容與上文寫法相同。
  • 確認(rèn)菜單的彈出方式,使用bindContextMenu屬性綁定組件。示例中為右鍵彈出菜單。
    1. Button('click for Menu')
    2. .bindContextMenu(this.MyMenu, ResponseType.RightClick)
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號