【HarmonyOS NEXT】实现Tabs组件的TabBar从左到右依次排列

一、背景

系统提供的Tabs目前只能居中展示,暂不支持居左显示,现有的需求是需要Tabs从左往右排列显示,考虑通过Scroll和Row组件来实现

二、实现思路

通过Scroll和Row组件用来实现一个页签,在onclick事件中通过修改索引值和Tabs组件的索引联动,实现切换效果,同时将Tabs的barHeight置为0

三、具体实现代码

javascript 复制代码
@Entry
@Component
struct TabsComponent {
  @State tabArray: number[] = [0, 1];
  @State focusIndex: number = 0;
  private controller: TabsController = new TabsController();

  build() {
    Column() {
      // 使用自定义页签组件 
      Scroll() {
        Row() {
          ForEach(this.tabArray, (item: number, index: number) => {
            Row({ space: 20 }) {
              Text('页签' + item)
                .fontColor(index === this.focusIndex ? Color.Red : Color.Black)
                .fontWeight(index === this.focusIndex ? FontWeight.Bold : FontWeight.Normal)
            }
            .padding({ left: 10, right: 10 })
            .onClick(() => {
              this.controller.changeIndex(index);
              this.focusIndex = index;
            })
          })
        }.margin(20)
      }
      .align(Alignment.Start)
      .scrollable(ScrollDirection.Horizontal)
      .scrollBar(BarState.Off)
      .width('100%')

      //tabs组件把tabbar隐藏 
      Tabs({ barPosition: BarPosition.Start, controller: this.controller }) {
        ForEach(this.tabArray, (item: number, index: number) => {
          TabContent() {
            Text('我是页面 ' + item + " 的内容")
              .fontSize(30)
          }
        })
      }.barHeight(0)
    }
    .height('100%')
    .width('100%')
  }
}

四、实现效果

相关推荐
灰灰勇闯IT2 小时前
鸿蒙 5.0 开发入门第二篇:掌握 ArkTS 的 if 分支语句,实现条件逻辑判断
华为·harmonyos
2501_925317132 小时前
[鸿蒙2025领航者闯关] 把小智AI装进「第二大脑」:从开箱到MCP智能体的全链路实战
人工智能·microsoft·harmonyos·鸿蒙2025领航者闯关·小智ai智能音箱·mcp开发
SmartBrain2 小时前
华为企业4A架构深度解析
华为·架构
柒儿吖2 小时前
让终端输出更美观:term_grid网格布局工具在OpenHarmony PC上的完整适配实战
harmonyos
柒儿吖3 小时前
深度实战:Rust交叉编译适配OpenHarmony PC——terminal_size完整适配案例
后端·rust·harmonyos
JohnnyDeng943 小时前
ArkTs-线程池工具封装
线程池·arkts·鸿蒙
hh.h.3 小时前
Flutter应用嵌入鸿蒙智慧座舱数字孪生界面的实现
华为·harmonyos
白茶三许4 小时前
【江鸟中原】集光鸿蒙项目开发
pytorch·深度学习·harmonyos
zhujian826374 小时前
二十一、【鸿蒙 NEXT】分词和汉字转拼音
华为·harmonyos·分词·汉字转拼音·分词ui卡顿
深海的鲸同学 luvi4 小时前
在鸿蒙设备上,如何启动一个真正可用的本地 Web 服务
华为·harmonyos