如何使用Tabs完成自定义导航栏

设置自定义导航栏需要使用tabBar的参数,它支持的CustomBuilder的方式传入自定义的函数组件样式.

自定义TabBar 之后,高亮的切换效果就没有了,需要自行实现,首先我们得知道什么时候进行了切换

名称

功能描述

onChange(event: (index: number) => void)

Tab页签切换后触发的事件。

- index:当前显示的index索引,索引从0开始计算。

滑动切换、点击切换 均会触发

onTabBarClick(event: (index: number) => void)10+

Tab页签点击后触发的事件。

- index:被点击的index索引,索引从0开始计算。

通过自定义导航栏实现如下效果:

 我们要定义一个状态变量去记录当前选中的索引,然后onChange方法去控制索引的改变.具体实现代码如下:

@Entry
@Component
struct TabsPage {
  @State
  currentIndex: number = 0

  @Builder
  tabBuilder(title: string, index: number, Img: Resource,) {
    Column({space:8}) {
      Image(Img)
        .fillColor(this.currentIndex === index ? Color.Blue : Color.Black)
        .width(30)
      Text(title)
        .fontColor(this.currentIndex === index ? Color.Blue : Color.Black)
    }
  }

  build() {
    Tabs({barPosition:BarPosition.End}) {
      TabContent() {
        Text('首页')
      }.tabBar(this.tabBuilder('首页', 0,$r('app.media.shouye')))

      TabContent() {
        Text('购物车')
      }.tabBar(this.tabBuilder('购物车', 1,$r('app.media.gouwuchekong')))

      TabContent() {
        Text('我的')
      }.tabBar(this.tabBuilder('我的', 2,$r('app.media.wode')))
    }
    .onChange((index) => {
      this.currentIndex = index
    })
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值