赞
踩
Navigation组件一般作为Page页面的根容器,通过属性设置来展示页面的标题栏、工具栏、导航栏等。
通过页签进行内容视图切换的容器组件,每个页签对应一个内容视图。
Navigation的toolBar(object | CustomBuilder)用于设置工具栏内容。其参数可以是一个配置对象或者一个CustomBuilder,由于通过配置对象创建的toolBar为预设样式,所以当我们需要特殊定制toolBar的时候,就需要通过创建CustormBuilder来根据需求自己声明UI样式。例如本项目中的toolBar就需要图标和字体颜色与主题色同步。
实现思路:
实现代码:(部分)
- @Entry
- @Component
- struct Index{
- // 当前激活位置
- @State current: number = 0
- // Tabs的Controller
- private tabController: TabsController = new TabController()
- // toolBar的数据
- private toolBars: Array<string> = ["item", "item", "item"]
- // 加载状态
- @State activeList: Array<boolean> = this.toolBars.map(() => false)
-
- build() {
- Navigation() {
- Tabs({
- controller: this.tabController
- }) {
- ForEach(this.activeList, (isActive: boolean, index: number) => {
- TabContent() {
- // 已激活加载内容(这里简单举例)
- if (isActive) {
- Text(`我是内容${index}`)
- } else {
- Text("正在加载中...")
- }
- }
- }, (_, index: number) => index.toString())
- }
- .barWidth(0)
- .barHeight(0)
- }
- .toolBar(this.ToolBar)
- }
-
- // 自定义ToolBar
- @Builder ToolBar() {
- // 简单举例,具体以需求为准
- Row() {
- ForEach(this.toolBars, (item: string, index: number) => {
- // 判断是否激活
- if (this.current === index) {
- // 这里可以设置激活样式
- // 已激活不用添加点击事件
- Text(item)
- } else {
- Text(item)
- .onClick(() => {
- // 更改激活位置
- this.current = index
- this.tabController.changeIndex(index)
- !this.activeList[index] && (this.activeList[index] = true)
- })
- }
- })
- }
- .justifyContent(FlexAlign.SpaceBetween)
- }
- }
今天通过运用 Navication、Tabs、CustomBuilder等内容。简单的实现了一个自定义Navication的ToolBar。在实际的开发中,可以灵活的运用TabsController等完成对样式或功能的定制以满足项目的需求。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。