如何实现Tabs组件的TabBar从左到右依次排列?

如何实现Tabs组件的TabBar从左到右依次排列

阅读 530
1 个回答

系统提供的Tabs暂不支持居左显示,可以通过Scroll和Row组件用来实现一个页签,在onclick事件中通过修改索引值和Tabs组件的索引联动,实现切换效果,同时将Tabs的barHeight置为0。具体实现可参考如下示例代码:

// xxx.ets 
@Entry 
@Component 
struct TabsExample { 
  @State tabArray: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 
  @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) 
                .fontWeight(index === this.focusIndex ? FontWeight.Bold : FontWeight.Normal) 
            } 
            .padding({ left: 10, right: 10 }) 
            .onClick(() => { 
              this.controller.changeIndex(index); 
              this.focusIndex = index; 
            }) 
          }) 
        } 
      } 
      .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%') 
  } 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进