当前位置:   article > 正文

鸿蒙HarmonyOS实战-ArkUI组件(Menu)_arkui 父页面展示子页面

arkui 父页面展示子页面

 一、Menu组件

Menu组件是一种常见的用户界面(UI)控件,用于在移动应用程序中显示可选项列表。它通常由一系列链接或按钮组成,以帮助用户导航和选择所需的操作。Menu组件可以在水平或垂直方向上呈现,可以是下拉或弹出式的,并可以在需要时动态更新其内容。通常,Menu组件可以在导航栏、侧边栏或上下文菜单中找到。一些Menu组件还支持图标和快捷键,以增强用户交互性和可用性。

1.创建默认样式的菜单

默认样式的菜单指的是操作系统默认提供的菜单样式,在不经过样式定义的情况下,菜单的外观和行为取决于操作系统。例如,大多数操作系统提供了一个默认的下拉菜单样式,其中包含一个向下箭头和一个下拉列表,当用户单击时,列表会向下滑动。而操作系统的菜单通常包括一个固定的样式。

  1. @Entry
  2. @Component
  3. struct Index {
  4. build() {
  5. Row() {
  6. Button('click for Menu')
  7. .bindMenu([
  8. {
  9. value: 'Menu1',
  10. action: () => {
  11. console.info('handle Menu1 select')
  12. }
  13. }
  14. ])
  15. }
  16. .margin(20)
  17. .height('100%')
  18. }
  19. }

在这里插入图片描述

2.创建自定义样式的菜单

虽然默认样式的菜单可以提供一些基本的菜单操作,但通常它们无法满足大多数应用程序或网站的需求,因此需要自定义样式的菜单。

  1. @Entry
  2. @Component
  3. struct Index {
  4. @State select: boolean = true
  5. private iconStr: ResourceStr = $r("app.media.app_icon")
  6. private iconStr2: ResourceStr = $r("app.media.app_icon")
  7. @Builder
  8. SubMenu() {
  9. Menu() {
  10. MenuItem({ content: "复制", labelInfo: "Ctrl+C" })
  11. MenuItem({ content: "粘贴", labelInfo: "Ctrl+V" })
  12. }
  13. }
  14. @Builder
  15. MyMenu(){
  16. Menu() {
  17. MenuItem({ startIcon: $r("app.media.icon"), content: "菜单选项" })
  18. MenuItem({ startIcon: $r("app.media.icon"), content: "菜单选项" }).enabled(false)
  19. MenuItem({
  20. startIcon: this.iconStr,
  21. content: "菜单选项",
  22. endIcon: $r("app.media.app_icon"),
  23. // 当builder参数进行配置时,表示与menuItem项绑定了子菜单。鼠标hover在该菜单项时,会显示子菜单。
  24. builder: this.SubMenu.bind(this),
  25. })
  26. MenuItemGroup({ header: '小标题' }) {
  27. MenuItem({ content: "菜单选项" })
  28. .selectIcon(true)
  29. .selected(this.select)
  30. .onChange((selected) => {
  31. console.info("menuItem select" + selected);
  32. this.iconStr2 = $r("app.media.icon");
  33. })
  34. MenuItem({
  35. startIcon: $r("app.media.app_icon"),
  36. content: "菜单选项",
  37. endIcon: $r("app.media.app_icon"),
  38. builder: this.SubMenu.bind(this)
  39. })
  40. }
  41. MenuItem({
  42. startIcon: this.iconStr2,
  43. content: "菜单选项",
  44. endIcon: $r("app.media.app_icon")
  45. })
  46. }
  47. }
  48. build() {
  49. Row() {
  50. Button('click for Menu')
  51. .bindMenu(this.MyMenu)
  52. // .bindContextMenu(this.MyMenu, ResponseType.RightClick) 设置菜单打开行为
  53. }
  54. }
  55. }

在这里插入图片描述
本人测试子菜单在模拟器和预览都出不来

 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/228864

推荐阅读
相关标签