第九节HarmonyOS 常用基础组件24-Navigation

news2024/11/19 15:31:16

1、描述

Navigation组件一般作为Page页面的根容器,通过属性设置来展示的标题栏、工具栏、导航栏等。

2、子组件

可以包含子组件,推荐与NavRouter组件搭配使用。

3、接口

Navigation()

4、属性

名称

参数类型

描述

title

string|NavigationCommonTitle|NavigationCustomTitle| CustomBuilder

页面标题

menus

Array<NavigationMenuItem>| CustomBuilder

页面右上角菜单。使用Array<NavigationMenuItem>写法时,竖屏最多支持显示3个图标,横屏最多支持显示5个图标,多余的图标会被自动放入自动生成的更多图标。

titleMode

NavigationTitleMode

页面标题栏显示模式。

默认值:NavigationTitleMode.Free

toolBar

object|CustomBuilder

设置工具栏内容。

Items:工具栏所有项

Items均分底部工具栏,在每个均分内容布局文本和图标,文本超长时,逐级缩小,缩小之后换行,最后...截断。

hideToolBar

boolean

隐藏工具栏。

默认值:false

true:隐藏工具栏

false:显示工具栏

hideTitleBar

boolean

隐藏标题栏。

默认值:false

true:隐藏标题栏

false:显示标题栏

hideBackButton

boolean

隐藏返回键。不支持隐藏Navigation组件标题栏中的返回图标。

默认值:false

说明:

返回键仅针对titleMode为NavigationTitleMode.Min时才生效。

navBarWidth

Length

导航栏宽度。

默认值:200vp

说明:仅在Navigation组件分栏时生效。

navBarPosition

NavBarPosition

导航栏位置。

默认值:NavBarPosition.Start

说明:仅在Navigation组件分栏时生效。

mode

NavigationMode

导航栏的显示模式。

默认值:NavigationMode.Auto

自适应:基于组件的宽度自适应单栏和双栏。

backButtonIcon

string|PixeMap|Resource

设置导航栏返回图标。

hideNavBar

boolean

是否显示导航栏(仅在mode为NavigationMode.Split时生效)

  1. 属性中一些类型的说明

Menus -> NavigationMenuItem类型说明

名称

类型

必填

描述

value

string

菜单栏单个选项的显示文本。

icon

string

菜单栏单个选项的图标资源路径。

action

() => void

当前选项被选中的事件回调。

toolBar -> object类型说明

名称

类型

必填

描述

value

string

工具栏单个选项的显示文本。

icon

string

工具栏单个选项的图标资源路径。

action

() => void

当前选项被选中的事件回调。

titleMode -> NavigationTitleMode枚举说明

名称

描述

Free

当内容为可滚动组件时,标题随着内容向上滚动而缩小(子标题的大小不变、淡出)。向下滚动内容时则恢复原样。

Mini

固定为小图标模式。

Full

固定为大图标模式。

NavBarPosition枚举说明

名称

描述

Start

双栏显示时,主列在主轴方向首部。

End

双栏显示时,主列在主轴方向尾部。

NavigationMode枚举说明

名称

描述

Stack

导航栏与内容区独立显示,相当于两个页面。

Split

导航栏与内容区分两栏显示。

Auto

窗口宽度>=520vp时,采用Split模式显示;窗口宽度<520vp时,采用Stack模式显示。

TitleHeight枚举说明

名称描述
MainOnly只有主标题时标题栏的推荐高度(56vp)。
MainWithSub同时有主标题和副标题时标题栏的推荐高度(82vp)。

6、事件

名称

描述

onTitleModeChange(callback: (titleMode: NavigationTitleMode) => void)

当titleMode为NavigationTitleMode.Free时,随着可滚动组件的滑动标题栏模式发生变化时触发此回调。

onNavBarStateChange(callback: (isVisible: boolean) => void)

导航栏显示状态切换时触发该回调。返回值isVisible为true时表示显示,为false时表示隐藏。

7、示例

import router from '@ohos.router'



@Entry

@Component

struct NavigationPage {

  @State message: string = 'Navigation组件一般作为Page页面的根容器,通过属性设置来展示页面的标题栏、工具栏、导航栏等。'

  private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  @State currentIndex: number = 0

  @State Build: Array<Object> = [

    {

      text: 'add',

      num: 0

    },

    {

      text: 'app',

      num: 1

    },

    {

      text: 'collect',

      num: 2

    }

  ]



  // 页面标题

  @Builder

  NavigationTitle() {

    Column() {

      Text('Title')

        .fontColor('#182431')

        .fontSize(30)

        .lineHeight(41)

        .fontWeight(700)

      Text('subtitle')

        .fontColor('#182431')

        .fontSize(14)

        .lineHeight(19)

        .opacity(0.4)

        .margin({ top: 2, bottom: 20 })

    }

    .alignItems(HorizontalAlign.Start)

  }



  // 页面右上角菜单

  @Builder

  NavigationMenus() {

    Column() {

      Blank(12)

      Row() {

        Image($r("app.media.navigation_icon1"))

          .width(24)

          .height(24)

        Image($r("app.media.navigation_icon1"))

          .width(24)

          .height(24)

          .margin({ left: 24 })

        Image($r("app.media.navigation_icon2"))

          .width(24)

          .height(24)

          .margin({ left: 24 })

      }

    }



  }



  // 设置工具栏内容

  @Builder

  NavigationToolbar() {

    Row() {

      ForEach(this.Build, (item) => {

        Column() {

          Image(this.currentIndex == item.num ? $r("app.media.navigation_toolbar_public_selected") : $r("app.media.navigation_toolbar_public"))

            .width(24)

            .height(24)

          Text(item.text)

            .fontColor(this.currentIndex == item.num ? '#007DFF' : '#182431')

            .fontSize(10)

            .lineHeight(14)

            .fontWeight(500)

            .margin({ top: 3 })

        }.width(104).height(56)

        .onClick(() => {

          this.currentIndex = item.num

        })

      })

    }.margin({ left: 24 })

  }



  build() {

    Column() {

      Navigation() {

        TextInput({ placeholder: 'search...' })

          .width('90%')

          .height(40)

          .backgroundColor('#FFFFFF')

          .margin({ top: 8 })



        List({ space: 12, initialIndex: 0 }) {

          ForEach(this.arr, (item) => {

            ListItem() {

              Text('' + item)

                .width('90%')

                .height(72)

                .backgroundColor('#FFFFFF')

                .borderRadius(24)

                .fontSize(16)

                .fontWeight(500)

                .textAlign(TextAlign.Center)

            }.editable(true)

          }, item => item)

        }

        .height(324)

        .width('100%')

        .margin({ top: 12, left: '10%' })



        Button("Navigation文本文档")

          .fontSize(20)

          .backgroundColor('#007DFF')

          .width('96%')

          .onClick(() => {

            // 处理点击事件逻辑

            router.pushUrl({

              url: "pages/baseComponent/navigation/NavigationDesc",

            })

          })

          .margin({ top: 20 })



      }

      .title(this.NavigationTitle) // 页面标题

      .menus(this.NavigationMenus) // 页面右上角菜单

      .titleMode(NavigationTitleMode.Full) // 页面标题栏显示模式。

      .toolBar(this.NavigationToolbar) // 设置工具栏内容

      .hideTitleBar(false) // 隐藏标题栏

      .hideToolBar(false) // 隐藏工具栏

      .onTitleModeChange((titleModel: NavigationTitleMode) => { //

        console.info('titleMode' + titleModel)

      })

    }

    .width('100%').height("100%").backgroundColor('#F1F3F5')

  }

}

8、效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1466541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 实现 ATR 指标计算(真实波幅):股票技术分析的利器系列(10)

Python 实现 ATR 指标计算&#xff08;真实波幅&#xff09;&#xff1a;股票技术分析的利器系列&#xff08;10&#xff09; 介绍算法解释 代码rolling函数介绍核心代码 完整代码 介绍 ATR&#xff08;真实波幅&#xff09;是一种技术指标&#xff0c;用于衡量市场波动性的程…

RabbitMQ的死信队列和延迟队列

文章目录 死信队列如何配置死信队列死信队列的应用场景Spring Boot实现RabbitMQ的死信队列 延迟队列方案优劣&#xff1a;延迟队列的实现有两种方式&#xff1a; 死信队列 1&#xff09;“死信”是RabbitMQ中的一种消息机制。 2&#xff09;消息变成死信&#xff0c;可能是由于…

基于Python网络爬虫的IT招聘就业岗位可视化分析推荐系统

文章目录 基于Python网络爬虫的IT招聘就业岗位可视化分析推荐系统项目概述招聘岗位数据爬虫分析系统展示用户注册登录系统首页IT招聘数据开发岗-javaIT招聘数据开发岗-PythonIT招聘数据开发岗-Android算法方面运维方面测试方面招聘岗位薪资多维度精准预测招聘岗位分析推荐 结语…

《TCP/IP详解 卷一》第6章 DHCP

目录 6.1 引言 6.2 DHCP 6.2.1 地址池和租用 6.2.2 DHCP和BOOTP消息格式 6.2.3 DHCP和BOOTP选项 6.2.4 DHCP协议操作 6.2.5 DHCPv6 6.2.6 DCHP中继 6.2.7 DHCP认证 6.2.8 重新配置扩展 6.2.9 快速确认 6.2.10 位置信息&#xff08;LCI和LoST&#xff09; 6.2.11 移…

GPT-SoVITS 快速声音克隆使用案例:webui、api接口

参考: https://github.com/RVC-Boss/GPT-SoVITS 环境: Python 3.10 PyTorch 2.1.2, CUDA 12.0 安装包: 1、使用: 1)下载项目 git clone https://github.com/RVC-Boss/GPT-SoVITS.git2)下载预训练模型 https://huggingface.co/lj1995/GPT-SoVITS 下载模型文件放到GPT…

Vue2响应式原理分析(数据代理与数据劫持)

综述&#xff1a; 我们都知道&#xff0c;每个Vue的应用都是通过new一个Vue构造函数从而创造出来一个vm实例对象&#xff0c;el&#xff08;elect&#xff09;配置项为通过id选择器#root选择index页面中的根dom元素进行绑定&#xff0c;data配置项则为vue模板中用到的源数据。 …

python 层次分析(AHP)

文章目录 一、算法原理二、案例分析2.1 构建指标层判断矩阵2.2 求各指标权重2.2.1 算术平均法&#xff08;和积法&#xff09;2.2.2 几何平均法&#xff08;方根法&#xff09; 2.3 一致性检验2.3.1 求解最大特征根值2.3.2 求解CI、RI、CR值2.3.3 一致性判断 2.4 分别求解方案层…

算法沉淀——FloodFill 算法(leetcode真题剖析)

算法沉淀——FloodFill 算法 01.图像渲染02.岛屿数量03.岛屿的最大面积04.被围绕的区域05.太平洋大西洋水流问题06.扫雷游戏07.衣橱整理 Flood Fill&#xff08;泛洪填充&#xff09;算法是一种图像处理的基本算法&#xff0c;用于填充连通区域。该算法通常从一个种子点开始&am…

【DDD】学习笔记-薪资管理系统的测试驱动开发2

测试驱动开发的过程 满足简单设计并编写新的测试 当代码满足重用性和可读性之后&#xff0c;就应遵循简单设计的第四条原则“若无必要&#xff0c;勿增实体”&#xff0c;不要盲目地考虑为其增加新的软件元素。这时&#xff0c;需要暂时停止重构&#xff0c;编写新的测试。 …

2.23数据结构

单向循环链表 创建单向循环链表&#xff0c;创建节点 &#xff0c;头插&#xff0c;按位置插入&#xff0c;输出&#xff0c;尾删&#xff0c;按位置删除功能 //main.c #include "loop_list.h" int main() {loop_p Hcreate_head();insert_head(H,12);insert_head(…

计算机网络-网络层,运输层,应用层

网络层/网际层 网络层的主要任务包括&#xff1a; 提供逻辑上的端到端通信&#xff1a;网络层负责确定数据的传输路径&#xff0c;使数据能够从源主机传输到目标主机&#xff0c;即实现端到端的通信。数据包的路由和转发&#xff1a;网络层根据目标主机的地址信息&#xff0c…

vue项目使用vue2-org-tree

实现方式 安装依赖 npm i vue2-org-tree使用的vue页面引入 <template><div class"container"><div class"oTree" ><vue2-org-tree name"test":data"data":horizontal"horizontal":collapsable"…

【服务器数据恢复】通过reed-solomon算法恢复raid6数据的案例

服务器数据恢复环境&#xff1a; 一台网站服务器中有一组由6块磁盘组建的RAID6磁盘阵列&#xff0c;操作系统层面运行MySQL数据库和存放一些其他类型文件。 服务器故障&#xff1a; 该服务器在工作过程中&#xff0c;raid6磁盘阵列中有两块磁盘先后离线&#xff0c;不知道是管理…

LabVIEW开发FPGA的高速并行视觉检测系统

LabVIEW开发FPGA的高速并行视觉检测系统 随着智能制造的发展&#xff0c;视觉检测在生产线中扮演着越来越重要的角色&#xff0c;尤其是在质量控制方面。传统的基于PLC的视觉检测系统受限于处理速度和准确性&#xff0c;难以满足当前生产需求的高速和高精度要求。为此&#xf…

【python】yolo目标检测模型转为onnx,及trt/engine模型的tensorrt轻量级模型部署

代码参考&#xff1a; Tianxiaomo/pytorch-YOLOv4: PyTorch ,ONNX and TensorRT implementation of YOLOv4 (github.com)https://github.com/Tianxiaomo/pytorch-YOLOv4这个大佬对于各种模型转化写的很全&#xff0c;然后我根据自己的需求修改了部分源码&#xff0c;稍微简化了…

【区块链】联盟链

区块链中的联盟链 写在最前面**FAQs** 联盟链&#xff1a;区块链技术的新兴力量**联盟链的定义****联盟链的技术架构**共识机制智能合约加密技术身份认证 **联盟链的特点**高效性安全性可控性隐私保护 **联盟链的应用场景****金融服务****供应链管理****身份验证****跨境支付**…

VSCODE include错误 找不到 stdio.h

解决办法&#xff1a; Ctrl Shift P 打开命令面板&#xff0c; 键入 “Select Intellisense Configuration”&#xff08;下图是因为我在写文章之前已经用过这个命令&#xff0c;所以这个历史记录出现在了第一行&#xff09; 再选择“Use gcc.exe ”&#xff08;后面的Foun…

网络原理-TCP/IP(7)

目录 网络层 路由选择 数据链路层 认识以太网 以太网帧格式 认识MAC地址 对比理解MAC地址和IP地址 认识MTU ARP协议 ARP协议的作用 ARP协议工作流程 重要应用层协议DNS(Domain Name System) DNS背景 NAT技术 NAT IP转换过程 NAPT NAT技术的优缺点 网络层 路由…

如何将建筑白模叠加到三维地球上?

​ 通过以下方法可以将建筑白模叠加到三维地球上。 方法/步骤 下载三维地图浏览器 http://www.geosaas.com/download/map3dbrowser.exe&#xff0c;安装完成后桌面上出现”三维地图浏览器“图标。 2、双击桌面图标打开”三维地图浏览器“ 3、点击“建筑白模”菜单&…

基于java(Springboot)学生信息管理和新生报到系统设计与实现

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…