HarmonyOS 实战开发 —— 自定义tabs导航栏实现切换效果


📚往期笔录记录🔖:

🔖鸿蒙(HarmonyOS)北向开发知识点记录~
🔖鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~
🔖鸿蒙应用开发与鸿蒙系统开发哪个更有前景?
🔖嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~
🔖对于大前端开发来说,转鸿蒙开发究竟是福还是祸?
🔖鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?
🔖记录一场鸿蒙开发岗位面试经历~
🔖持续更新中……


一.Tabs组件的子组件TabContent有属性.tabBar(),由官方文档可知,其参数value: 可以是字符串、资源引用、自定义构建器或包含 icon 和 text 的对象,用于设置 TabBar 上显示的内容。

但是该导航栏为默认样式,要想实现更多样式,必须自定义TabBar。

自定义TabBar步骤

1.使用@Builder修饰一个函数tabBarBuilder(),里面是自定义的TabBar的结构。

2…tabBar()中传参为自定义构建器this.tabBarBuilder()。

注:构建器函数里面是可以传参的,所以多个TabContent可以共用一个tabBarBuilder()然后传不同的参数。

二.在自定义TabBar的过程中,我们发现会遇到切换TabContent时,导航栏发生样式变化的场景。

.onChange()事件和.onTabBarClick()事件都可以获得当前页面的索引。所以设置一个存储当前页面的索引值的变量,在触发事件的时候,将获得的索引值存储到这个变量中即可。

//设置当前页面的索引值,默认为0
@State currentIndex: number = 0
//设置onChange事件
Tabs(){}
.onChange((index: number) => {
        this.currentIndex = index
      })

三.在第一点我们提到构建器函数里面是可以传参的,如果我们在传参中加上每个TabContent对应的下标值,那么在自定义的tabBar中,就可以通过判断语句来设置不同TabContent的不同样式。还可以通过传参的下标值与第二点中变量存储的索引值比较,从而设置当前页面的高亮显示(通过三元符)。

四.轮播图

@Builder
  //轮播图Builder
  pic(url: ResourceStr, str: string) {
    Column() {
      Image(url)
        .width('100%')
      Row() {
        Text(str)
          .fontColor(Color.White)
          .fontSize(16)
          .fontWeight(FontWeight.Bold)
          .maxLines(1)
          .textOverflow({
            overflow: TextOverflow.Ellipsis
          })
      }
      .width('100%')
      .padding({
        left: 10,
        right: 10
      })
      .position({
        bottom: 30
      })
    }
    .width('100%')
  }
//轮播图List
  @State bannerList: BannerItem[] = [
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值