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

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

HarmonyOS
2024-03-17 17:22:35
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
LenZhong

系统提供的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%') 
  } 
}
分享
微博
QQ
微信
回复
2024-03-18 21:04:22
相关问题
如何实现文本竖向排列
298浏览 • 1回复 待解决
如何选择Navigation 组件Tabs 组件
213浏览 • 1回复 待解决
如何去除Tabs组件两侧蒙层
111浏览 • 1回复 待解决
如何实现组件边缘颜色渐变
208浏览 • 1回复 待解决
linux shell利用for语句依次输出
4498浏览 • 1回复 待解决
组件如何实现渐变色?
367浏览 • 1回复 待解决
List组件如何实现多列效果
106浏览 • 1回复 待解决
Grid组件如何实现高度自适应
457浏览 • 1回复 待解决
eTS求助 tabBarIcon代码样例 ?
4109浏览 • 1回复 待解决
Image组件如何实现双指手势放大
129浏览 • 1回复 待解决