赞
踩
[Navigation]组件一般作为页面的根容器,包括单页面、分栏和自适应三种显示模式。同时,Navigation提供了属性来设置页面的标题栏、工具栏、导航栏等。
Navigation组件的页面包含主页和内容页。主页由标题栏、内容区和工具栏组成,可在内容区中使用[NavRouter]子组件实现导航栏功能。内容页主要显示[NavDestination]子组件中的内容。
NavRouter是和Navigation搭配使用的特殊子组件,默认提供点击响应处理,不需要开发者自定义点击事件逻辑。NavRouter有且仅有两个根节点,第二个根节点是NavDestination。NavDestination是和NavRouter搭配使用的特殊子组件,用于显示Navigation组件的内容页。当开发者点击NavRouter组件时,会跳转到对应的NavDestination内容区。
Navigation组件通过mode属性设置页面的显示模式。
自适应模式
Navigation组件默认为自适应模式,此时mode属性为NavigationMode.Auto。自适应模式下,当设备宽度大于520vp时,Navigation组件采用分栏模式,反之采用单页面模式。
Navigation() {
...
}
.mode(NavigationMode.Auto)
单页面模式
图1 单页面布局示意图
将mode属性设置为NavigationMode.Stack,Navigation组件即可设置为单页面显示模式。
Navigation() {
...
}
.mode(NavigationMode.Stack)
分栏模式
图2 分栏布局示意图
将mode属性设置为NavigationMode.Split,Navigation组件即可设置为分栏显示模式。
@Entry @Component struct NavigationExample { private arr: number\[\] = \[1, 2, 3\]; build() { Column() { Navigation() { TextInput({ placeholder: 'search...' }) .width("90%") .height(40) .backgroundColor('#FFFFFF') List({ space: 12 }) { ForEach(this.arr, (item) => { ListItem() { NavRouter() { Text("NavRouter" + item) .width("100%") .height(72) .backgroundColor('#FFFFFF') .borderRadius(24) .fontSize(16) .fontWeight(500) .textAlign(TextAlign.Center) NavDestination() { Text("NavDestinationContent" + item) } .title("NavDestinationTitle" + item) } } }, item => item) } .width("90%") .margin({ top: 12 }) } .title("主标题") .mode(NavigationMode.Split) .menus(\[ {value: "", icon: "./image/ic\_public\_search.svg", action: ()=> {}}, {value: "", icon: "./image/ic\_public\_add.svg", action: ()=> {}}, {value: "", icon: "./image/ic\_public\_add.svg", action: ()=> {}}, {value: "", icon: "./image/ic\_public\_add.svg", action: ()=> {}}, {value: "", icon: "./image/ic\_public\_add.svg", action: ()=> {}} \]) .toolBar({items: \[ {value: "func", icon: "./image/ic\_public\_highlights.svg", action: ()=> {}}, {value: "func", icon: "./image/ic\_public\_highlights.svg", action: ()=> {}}, {value: "func", icon: "./image/ic\_public\_highlights.svg", action: ()=> {}} \]}) } .height('100%') .width('100%') .backgroundColor('#F1F3F5') } }
标题栏在界面顶部,用于呈现界面名称和操作入口,Navigation组件通过titleMode属性设置标题栏模式。
Mini模式
普通型标题栏,用于一级页面不需要突出标题的场景。
图3 Mini模式标题栏
Navigation() {
...
}
.titleMode(NavigationTitleMode.Mini)
Full模式
强调型标题栏,用于一级页面需要突出标题的场景。
图4 Full模式标题栏
Navigation() {
...
}
.titleMode(NavigationTitleMode.Full)
菜单栏位于Navigation组件的右上角,开发者可以通过menus属性进行设置。menus支持Array<[NavigationMenuItem]和[CustomBuilder]两种参数类型。使用Array类型时,竖屏最多支持显示3个图标,横屏最多支持显示5个图标,多余的图标会被放入自动生成的更多图标。
图5 设置了3个图标的菜单栏
Navigation() {
...
}
.menus(\[{value: "", icon: "./image/ic_public_search.svg", action: ()=>{}},
{value: "", icon: "./image/ic_public_add.svg", action: ()=>{}},
{value: "", icon: "./image/ic_public_add.svg", action: ()=>{}}\])
图6 设置了4个图标的菜单栏
Navigation() {
...
}
.menus(\[{value: "", icon: "./image/ic_public_search.svg", action: ()=>{}},
{value: "", icon: "./image/ic_public_add.svg", action: ()=>{}},
{value: "", icon: "./image/ic_public_add.svg", action: ()=>{}},
{value: "", icon: "./image/ic_public_add.svg", action: ()=>{}}\])
工具栏位于Navigation组件的底部,开发者可以通过toolBar属性进行设置。
图7 工具栏
Navigation() {
...
}
.toolBar({items:\[
{value: "func", icon: "./image/ic\_public\_highlights.svg", action: ()=>{}},
{value: "func", icon: "./image/ic\_public\_highlights.svg", action: ()=>{}},
{value: "func", icon: "./image/ic\_public\_highlights.svg", action: ()=>{}}\]})
鸿蒙开发正当时,现在入手正是好时机。
还在犹豫不决的朋友们,小编在这里建议大家早点入手!
在这里分享一份鸿蒙学习路线图帮助那些不知道怎么入门的朋友,另外一些鸿蒙开发的资料文档也顺便分享给大家,扫下方二维码就能免费送呢!
路线图适合人群:
内容概要:《鸿蒙零基础入门学习指南》、《鸿蒙开发学习之UI》、《鸿蒙开发学习之Web》、《鸿蒙开发学习之应用模型》
内容特点:条理清晰,含图像化表示更加易懂。
适用于HarmonyOS应用开发的初学者。通过构建一个简单的具有页面跳转/返回功能的应用,快速了解工程目录的主要文件,熟悉HarmonyOS应用开发流程。
应用开发过程中,经常需要用到颜色、字体、间距、图片等资源,在不同的设备或配置中,这些资源的值可能不同。
ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。因此,在学习ArkTS语言之前,建议开发者具备TS语言开发能力。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。