首页Tabs

本篇文章我们来讲解首页的UI设计

一、分析页面布局

Tabs组件可以实现页面内视图内容快速转换,包含了TabBar和TabContent两大部分

二、关键技术

这个界面运用了两个关键技术,分别是Tabs组件和Builder函数:

1、Tabs组件

使用这个组件可以使用户通过点击标签来切换显示面板,方便地在不同的选项卡之间进行快速切换。

TabContent包含了上面的内容

TabBar则是小标题也就是下面的导航栏部分

2、Builder函数

Builder函数可以将对象的构建过程分解为多个步骤,每个步骤设置一个或多个属性的值。这样可以使对象的构建更加清晰和易于理解,避免了在构造函数中传递大量参数的复杂性。

三、代码编写

接下来我们就可以根据上面分析的布局开始编写代码

@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中使用了一个Column容器来排列图片和内容

此外,我们想要实现点击导航栏变色的操作需要使用onChange点击事件通过不同的index来控制颜色的变化

四、最终的效果

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值