HarmonyOs ArkUI- Tabs组件(导航栏)

Tab组件几乎是每一个App首页都要用到的。这个组件在使用上有个特点就是,几乎每个应用都会用,但是几乎每个应用就算干到公司倒闭, 也只用那么寥寥几次而已。开发次数不会太多。但是开发的位置却会比较重点。这个相当于一个外部的架子。我认为对于这个控件我们要掌握怎么让它有很好的交互体验,怎么让当行按钮长得好看,滑起来比较流畅。怎么切换页面这些应该就行了。

Tab基本布局

我们看下下图,结合之前自己使用手机应用的印象,应该一眼就能看出来这个Tab是用来干啥的了。

简而言之,这个Tab就是做导航栏用的。一般,尤其是电商类的App点开首页下方就是导航栏。

好下面我们了解一下概念。

上述图每一张的效果都是Tabs组件(注意后面有个s)来完成的。就是叫Tabs组件。Tabs组件下分两个部分, TabBar, 和 TabContent。

  • TabBar指的是导航页签栏。这个导航栏可以指定,是在底部,顶部,还是侧边栏。
  • TabContent是内容页。

其结构与Android中的导航栏组合方式基本一致。

所以,我们在写代码的时候,骨架上也会遵循这个结构。

@Entry
@Component
struct TabsPage {
  @State message: string = 'Hello World';

  build() {
    RelativeContainer() {
      Tabs(){
        TabContent(){
          Text("首页内容")
        }
        .backgroundColor(Color.Yellow)
        .tabBar("首页")

        TabContent(){
          Text("商城内容")
        }
        .backgroundColor(Color.Pink)
        .tabBar("商城")

        TabContent(){
          Text("朋友内容")
        }
        .backgroundColor(Color.Blue)
        .tabBar("朋友")

        TabContent(){
          Text("我的内容")
        }
        .backgroundColor(Color.Green)
        .tabBar("我的")
      }
    }
    .height('100%')
    .width('100%')
  }
}

效果如图所示:

我们会发现这个导航栏是在顶部而非底部的。同时还有其他的特点。也就是导航栏如果不做任何设置,特点为

  • TabBar位置在上方。
  • TabBar里面的文字,底部加了条,而且点击的时候,背景有点击效果,条也会变动。颜色为HarmonyOs配套的蓝色系。
  • TabContent的大小,我们没有做任何指定,似乎就已经是占满其余的内容了。

好,了解了以上特点,我们也大致知道要写一个比较好的这种架子应该改什么了。首先,市面上总的导航护栏,是位于下方的,而且,有的应用点击的时候没有这些效果,而且界面长得也不一样,人家是图标。

而这种上方的导航页,通常是一个大导航里子Tab页里又有分类时用到的。 商城中用的多。我们接下来就会往这个方向上凑!

说明

  • TabContent组件不支持设置通用宽度属性,其宽度默认撑满Tabs父组件。
  • TabContent组件不支持设置通用高度属性,其高度由Tabs父组件高度与TabBar组件高度决定。


底部导航栏

底部导航栏通常用于一级界面的底部,用户打开应用,就能够分清应用的功能分类。以及页签对应的内容,并且其位于底部更加有利于用户单手点击。

修改为底部导航栏的方式为 修改 Tabs组件的barPosition属性

@Entry
@Component
struct TabsPage {
  @State message: string = 'Hello World';

  build() {
    RelativeContainer() {
      Tabs(){
        TabContent(){
          Text("首页内容")
        }
        .backgroundColor(Color.Yellow)
        .tabBar("首页")

        TabContent(){
          Text("商城内容")
        }
        .backgroundColor(Color.Pink)
        .tabBar("商城")

        TabContent(){
          Text("朋友内容")
        }
        .backgroundColor(Color.Blue)
        .tabBar("朋友")

        T
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2579所以然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值