鸿蒙tabbar ArkTS

鸿蒙tabbar ArkTS

做了仿照现在应用的做了一个tabbar。

官方文档地址
参考文档

tabbar

其中有个比较重要的点是,对image资源的引用问题。

资源相关说明

图片是resources目录下的base目录下的。

media目录下的图片的资源不能添加文件夹,只能是文件,而且文件的命名规则是只能包含字母大小写和下划线。

另外{资源引用的方式](https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-types-0000001477981241-V3)

要求资源定义的内容必须在编码阶段确定,中间不能更改,因此不能增加if之类的判断,只能把整个资源引用当做参数传递进去。

实现代码如下:

javascript 复制代码
@Entry
@Component
struct Index {
  @State message: string = 'Hello World'
  @State selectedIndex: number = 0

  @Builder TabBuider(index: number, name: string, selectedImage: Resource, normalImage: Resource) {
    Column() {
      if ( this.selectedIndex == index) {
        Image(selectedImage)
          .objectFit(ImageFit.Contain)
          .width(24)
          .height(24)
          .margin({bottom: '4lpx'})
      } else {
        Image(normalImage)
          .objectFit(ImageFit.Contain)
          .width(24)
          .height(24)
          .margin({bottom: '4lpx'})
      }

      Text(name)
        .fontSize(16)
    }
    .border({
      width: {top: '2lpx'},
      color: '#efefef',
      style: BorderStyle.Solid
    })
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
  }

  build() {
    Tabs({barPosition: BarPosition.End}) {
      TabContent() {
        Text(this.message)
      }
      .tabBar(this.TabBuider(0, "首页", $r('app.media.tabbar_home_selected'), $r('app.media.tabbar_home')))

      TabContent() {
        Text(this.message)
      }
      .tabBar(this.TabBuider(1, "数据", $r('app.media.tabbar_data_selected'), $r('app.media.tabbar_data')))

      TabContent() {
        Text(this.message)
      }
      .tabBar(this.TabBuider(2, "我的", $r('app.media.tabbar_mine_selected'), $r('app.media.tabbar_mine')))
    }.onChange(index=>{
      this.selectedIndex = index
    })
  }
}
相关推荐
轻口味22 分钟前
【每日学点鸿蒙知识】调试、网络、缓存、富文本编辑等
缓存·华为·harmonyos
MarkHD1 小时前
第一天 了解HarmonyOS的起源、发展、核心特性
华为·harmonyos
御承扬1 小时前
从零开始开发纯血鸿蒙应用之实现起始页
华为·harmonyos·arkts·应用起始页·ui设计思路
执着的小火车2 小时前
【2024华为OD-E卷-100分-boss的收入】(题目+思路+Java&C++&Python解析)
数据结构·算法·华为od·华为·排序算法
肾透侧视攻城狮2 小时前
基于华为ENSP的OSPF数据报文保姆级别详解(3)
网络·网络协议·网络安全·华为·信息与通信·ospf·dr/bdr
程序猿阿伟3 小时前
《鸿蒙系统AI技术:筑牢复杂网络环境下的安全防线》
网络·人工智能·harmonyos
pixle04 小时前
HarmonyOS Next系列之华为账号一键登录功能实现(十四)
华为·harmonyos·鸿蒙系统
Jackilina_Stone5 小时前
【HUAWEI】HCIP-AI-MindSpore Developer V1.0 | 第五章 自然语言处理原理与应用(3 And 4) | 学习笔记
人工智能·笔记·学习·计算机视觉·华为·自然语言处理·huawei
zhangjiaofa6 小时前
HarmonyOS 应用开发实践——基于 `Index` 组件的多语言、主题模式与文件存储管理
harmonyos
不爱吃糖的程序媛7 小时前
鸿蒙原生应用如何才能拉起系统浏览器?
华为·harmonyos