Tab容器

190 阅读1分钟

基本用法

@Entry
@Component
struct TabbarDemo {
  build() {
    Tabs() { // 顶级容器
      TabContent() {
        // 内容区域:只能有一个子组件
      }
      .tabBar('首页') // 导航栏
    }
    .属性
  }
}

属性

1.vertical:设置导航栏水平或者垂直

2.barPosition:调整导航栏的位置,开头或者结尾

3.scrollable:调整是否允许滑动切换

4.animationDuration:设置动画时间,单位(ms)

滚动导航栏

可以通过 Tabs 组件的 barMode 属性即可调整 固定导航栏 或 滚动导航栏

基本用法

Tabs(){
  // 内容略
}
  .barMode(BarMode.Scrollable)// 滚动
  // .barMode(BarMode.Fixed)// 默认值

自定义taBer

需要用到自定义构建函数来实现

Tabs() {
    TabContent() {
        // 内容略
    }
    .tabBar(this.tabBarBuilder())
  }

@Builder
tabBarBuilder() {
  // 自定义的Tabbar结构
}

Tabs组件的事件

名称功能描述
onChange(event: (index: number) => void)Tab页签切换后触发的事件。- index:当前显示的index索引,索引从0开始计算。滑动切换、点击切换 均会触发
onTabBarClick(event: (index: number) => void)10+Tab页签点击后触发的事件。- index:被点击的index索引,索引从0开始计算。

应用

@Entry
@Component
struct TabsDemo02 {
  build() {
    Tabs() {
      TabContent() {
        Text('首页')
      }
      .tabBar(this.tabBarBuilder($r('app.media.ic_tabbar_icon_2'), '购物车'))

      TabContent() {
        Text('搜索')
      }
      .tabBar(this.tabBarBuilder($r('app.media.ic_tabbar_icon_3'), '我的'))
    }
    .barPosition(BarPosition.End)
    .onChange((index) => {
      console.log('onChange-index:', index)
    })
    .onTabBarClick((index) => {
      console.log('tabBarClick-index:', index)
    })
  }

  @Builder
  tabBarBuilder(img: ResourceStr, text: string) {
    Column() {
      Image(img)
        .width(30)
      Text(text)
    }
  }
}