当前位置: 首页 > news >正文

鸿蒙_使用组件导航Navigation搭建应用框架

组件导航封装了页面、标题、菜单栏、工具栏等功能,我们只需要进行简单的设置,就能快速搭建应用的框架,我们直接新建一个独立页面来通过组件导航实现主页、设置页、我的页三个示例页面,并且相互之间可以跳转,并且天然支持宽屏时主页和二级页面自动分栏显示。

@Entry @Component struct TestNavigationWithSetting { @State message: string = 'Hello World'; //导航页面栈 navPathStack: NavPathStack = new NavPathStack(); //导航页 @Builder navPages(name: string) { if (name === 'SettingPage') { NavDestination() { Text('设置页内容') Button('返回') .onClick(() => { this.navPathStack.pop() }) }.title('设置') } else if (name === 'MinePage') { NavDestination() { Text('我的页内容') Button('返回') .onClick(() => { this.navPathStack.pop() }) }.title('我的') } } //自定义菜单栏 @Builder navMenus() { Row({ space: 10 }) { Button() { Row() { SymbolGlyph($r('sys.symbol.house')) .fontSize(20) } .alignItems(VerticalAlign.Center) // 垂直居中 } .padding(10) .backgroundColor(Color.White) .border({ width: 1 }) .type(ButtonType.Circle) .onClick(() => { this.navPathStack.pushPath({ name: 'SettingPage' }) }) Button() { Row() { SymbolGlyph($r('sys.symbol.message')) .fontSize(20) } .alignItems(VerticalAlign.Center) // 垂直居中 } .padding(10) .backgroundColor(Color.White) .border({ width: 1 }) .type(ButtonType.Circle) .onClick(() => { this.navPathStack.pushPath({ name: 'SettingPage' }) }) } .justifyContent(FlexAlign.End) .padding(10) //.backgroundColor(Color.Gray) .width('100%') .height('100%') } build() { Navigation(this.navPathStack) { Scroll() { Column({ space: 10 }) { Text('主页内容') Button('跳转到设置页') .margin(20) .onClick(() => { this.navPathStack.pushPath({ name: 'SettingPage' }) }) Button('跳转到我的页') .onClick(() => { this.navPathStack.pushPath({ name: 'MinePage' }) }) //生成几个占位 ForEach([1, 2, 3, 4, 5, 6, 7, 8], (item: number) => { Button('多加几个') .margin(10) .onClick(() => { try { this.getUIContext().getPromptAction().showToast({ message: '点击了按钮' }) } catch (error) { // TODO: Implement error handling. } }) }) Button('最后一个') .onClick(() => { this.navPathStack.pushPath({ name: 'MinePage' }) }) } .padding({ top: 10, bottom: 20 }) .width('100%') } } .navDestination(this.navPages) //.mode(NavigationMode.Auto) //导航模式:默认是宽屏(大于600vp)自动分栏 //.mode(NavigationMode.Stack)//不分栏 //.mode(NavigationMode.Split)//强制分栏 .title('主页') .title({ main: '主标题', sub: '副标题' }) //.titleMode(NavigationTitleMode.Free) //.titleMode(NavigationTitleMode.Full) //.titleMode(NavigationTitleMode.Mini) //.hideTitleBar(true) //隐藏标题和菜单栏 //设置菜单栏 .menus([ { value: '增加', icon: $r('sys.media.ohos_ic_public_add'), action: () => { this.navPathStack.pushPath({ name: 'MinePage' }) } }, { value: '分享', icon: $r('sys.media.ohos_ic_public_share'), action: () => { this.navPathStack.pushPath({ name: 'SettingPage' }) } }, { value: '编辑', icon: $r('sys.media.ohos_ic_public_edit'), action: () => { this.navPathStack.pushPath({ name: 'MinePage' }) } }, { value: '拍照', icon: $r('sys.media.ohos_ic_public_camera'), action: () => { this.navPathStack.pushPath({ name: 'MinePage' }) } }, { value: '取消', icon: $r('sys.media.ohos_ic_public_cancel'), action: () => { this.navPathStack.pushPath({ name: 'MinePage' }) } } ]) //.menus(this.navMenus) //自定义菜单栏 .toolbarConfiguration([ { value: '增加', icon: $r('sys.media.ohos_ic_public_add'), action: () => { this.navPathStack.pushPath({ name: 'MinePage' }) } }, { value: '扫码', icon: $r('sys.media.ohos_ic_public_scan'), action: () => { this.navPathStack.pushPath({ name: 'MinePage' }) } }, { value: '拍照', icon: $r('sys.media.ohos_ic_public_camera'), action: () => { this.navPathStack.pushPath({ name: 'SettingPage' }) } } /*, { value: '更多', icon: $r('sys.media.ohos_ic_public_more'), action: () => { this.navPathStack.pushPath({ name: 'MinePage' }) } }*/ ], { backgroundColor: undefined }) } }

实际运行效果如下,横屏效果:

宽屏效果:

http://www.jsqmd.com/news/623549/

相关文章:

  • NEURAL MASK幻镜多场景落地案例:小红书博主如何用它7天产出100+高质量封面图
  • 4月10日巴黎FCvs摩纳哥:摩纳哥冲击欧冠在即
  • 3步掌握WindowResizer:终极免费窗口强制调整解决方案
  • AI大模型、OpenClaw、Claude Code、Agent、Prompt、MCP、Skill、Token、多智能体、具身智能到底啥关系?
  • 告别裸机轮询:用STM32串口中断+DMA实现高效数据收发(附F103/F4代码对比)
  • 用Chord视频分析工具做影视剪辑:快速定位特定场景与人物出场时间
  • 【独家首发|奇点大会技术委员会内部报告】:92.7%的企业仍在用传统Spark处理AI工作负载?3个指标自测你的数据栈是否已“AI原生化”
  • 从点外卖到银行转账:用生活案例理解数据流图(DFD)在系统架构设计中的应用
  • Python通达信数据分析终极指南:10个技巧解锁量化投资自由之路
  • 收藏!小白程序员必看:手把手教你掌握RAG大模型核心技术,面试必备!
  • QQ空间历史说说备份终极指南:一键永久保存你的青春记忆
  • 阿里天池新闻推荐实战:多路召回策略解析与优化
  • 抖音批量下载神器:3分钟搞定无水印视频下载完整指南
  • 开源恶意域名情报库 2026-4-10
  • 使用 HTML + JavaScript 实现组织架构图
  • BMM150三轴电子罗盘驱动与8字形动态校准详解
  • 如何搜索 使用谷歌插件
  • 一键备份QQ空间:GetQzonehistory完整指南
  • clickhouse如何从postgres导入
  • AI赋能软件原型设计:主流工具全解析与实战选型指南
  • AI抠图神器:cv_unet图像抠图WebUI,支持JPG/PNG多格式快速处理
  • kali 免杀木马
  • 告别代码恐惧:用自然语言让AI成为你的全平台操作助手
  • 解锁边缘AI新可能:在Jetson Nano上实战部署Qwen-1.8B大模型
  • Bandgap电路仿真避坑指南:你的温度曲线为啥不平?PSRR和噪声仿真结果怎么看?
  • AI原生开发工具链怎么选?2026年Top 12工具实测数据+企业落地ROI模型(附淘汰清单)
  • 掌握3D相机匹配:fSpy开源工具实战指南
  • 前端测试:别让bug悄悄溜进你的应用
  • fre:ac音频转换器完整指南:如何在5分钟内完成无损格式转换
  • Ostrakon-VL-8B辅助设计:基于SolidWorks模型的智能说明文档生成