首页Tabs

前两篇文章呢我们已经完成了欢迎页面的开发,包括页面布局以及业务逻辑等

那么接下来的几篇文章我将带领你完成首页部分的开发

本篇文章呢先为大家讲解首页UI的导航栏设计

一、分析布局

照片多少有点糊但是不影响使用啊,我们可以很容易的看出首页的整体布局:

底部固定导航栏,导航栏内部有三个导航项,每个导航项都分为上部分图片和下部分文本

二、关键技术

Tabs组件

在固定导航栏中我们需要点击不同的导航项时内容会随之发生变化,这时候我们就可以用ArkUI中为我们提供的Tabs组件来实现页面内容的快速切换。

TabBar就是固定导航栏的部分

TabContent是上面需要展示的内容

Builder函数

但是由于Tabs组件TabBar的样式过于单一,我们需要借助Builder的函数,通过Builder函数就可以实现自己定义TabBar的样式

三、正式开发

由于我们首页的开发就是在index中,所以我们就不需要新建直接找到index,将index内没有用的东西统统删掉

按照我们分析的布局来书写代码

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

  @Builder TabBarBuilder(title: ResourceStr, image: ResourceStr, index: number) {
    Column({ space: CommonConstants.SPACE_8 }) {
      Image(image)
        .width(22)
        .fillColor(this.selectColor(index))
      Text(title)
        .fontSize(14)
        .fontColor(this.selectColor(index))
    }
  }

  selectColor(index: number) {
    return this.currentIndex === index ? $r('app.color.primary_color') : $r('app.color.gray')
  }

  build() {
    Tabs({ barPosition:BarPosition.End}) {
      TabContent() {
        Text('饮食记录页面')
      }
      .tabBar(this.TabBarBuilder($r('app.string.tab_record'), $r('app.media.ic_calendar'), 0))

      TabContent() {
        Text('发现页面')
      }
      .tabBar(this.TabBarBuilder($r('app.string.tab_discover'), $r('app.media.discover'), 1))

      TabContent() {
        Text('我的主页')
      }
      .tabBar(this.TabBarBuilder($r('app.string.tab_user'), $r('app.media.ic_user_portrait'), 2))

    }
    .width('100%')
    .height('100%')
    .onChange(index => this.currentIndex = index)
  }
}

在TabBarBuilder中我们还添加了一个index的参数,由于我们通过Builder来自定义样式后,要想实现点击不同的导航选项使其变色,我们需要使用.onChange(index => this.currentIndex = index)点击事件通过不同的index来控制颜色的变化。

为了使样式控制更加方便,我们还将颜色及文本样式类的代码通过传参的方式进行样式的渲染

四、最终效果

经过我们的分析及开发最终我们获得了底部导航栏的样式

OK,我们下篇文章接着讲,我们这里附上黑马程序员首页Tabs的视频链接,文章配合视频更好理解哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值