HarmonyOS 鸿蒙Next Tabs里的barMode中的ScrollableBarModeOptions

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Tabs里的barMode中的ScrollableBarModeOptions Tabs里的barMode中的ScrollableBarModeOptions中的margin怎么设置一边设置距离:比方left或者right,而不是同时设置,需要设置一边有距离

2 回复

当前的margin只支持Dimension属性,该属性不支持单边设置距离:ScrollableBarModeOptions对象说明

您可以设置.barMode(BarMode.Scrollable),自定义每个tabBar的宽度:barMode参考

另外可通过TabContent的.tabBar进行中通过设置margin配置页签左右侧距离,例如.margin({left: 10, right: 20})

@Entry
@Component
struct RefreshExample {
  @State isRefreshing: boolean = false
  @State fontColor: string = '#182431'
  @State selectedFontColor: string = '#007DFF'
  @State currentIndex: number = 0
  private controller: TabsController = new TabsController()
  @State arr:string[] = ['green','blue','yellow','pink']
  @State isShow:boolean = true
  leftWidth: number[] = [20,10,30,40]
  @Builder tabBuilder(index: number, name: string) {
    Column() {
      Text(name)
        .fontColor(this.currentIndex === index ? this.selectedFontColor : this.fontColor)
        .fontSize(16)
        .fontWeight(this.currentIndex === index ? 500 : 400)
        .lineHeight(22)
        .margin({ top: 17, bottom: 7})
        .backgroundColor(Color.Red)
      Divider()
        .strokeWidth(2)
        .color('#007DFF')
        .opacity(this.currentIndex === index ? 1 : 0)
    }.width(index==0?200:100).margin({left: this.leftWidth[index]})
  }
  @Builder
  tabMain(){
    Row(){
      Tabs({ barPosition: BarPosition.Start, index: this.currentIndex, controller: this.controller }) {
        ForEach(this.arr,(item:string,index)=>{
          TabContent() {
            tabContentInfo({text:item})
          }.tabBar(this.tabBuilder(index, (index+1).toString()))
        })
      }
      .vertical(false)
      .barMode(BarMode.Scrollable)
      .barWidth(360)
      .barHeight(56)
      .animationDuration(400)
      .onChange((index: number) => {
        this.currentIndex = index
      })
      .backgroundColor('#F1F3F5')
    }
    .width('100%')
    .height('100%')
  }
  build() {
    Column() {
      Refresh({ refreshing: this.isRefreshing}) {
        if(this.isShow){
          this.tabMain()
        }else{
          this.tabMain()
        }
      }
      .onStateChange((refreshStatus: RefreshStatus) => {
        // console.info('Refresh onStatueChange state is ' + refreshStatus)
      })
      .onOffsetChange((value: number) => {
        // console.info('Refresh onOffsetChange offset:' + value)
      })
      .onRefreshing(() => {
        setTimeout(() => {
          this.isRefreshing = false
          this.isShow =!this.isShow
        }, 2000)
        console.log('onRefreshing test')
      })
      .backgroundColor(0x89CFF0)
      .refreshOffset(64)
      .pullToRefresh(true)
    }
  }
}

@Component
export struct tabContentInfo{
  @Prop text:string
  aboutToAppear(): void {
    console.info("进入aboutToAppear:",this.text)
  }
  build() {
    Column(){
      Text(this.text)
      Button('改变')
        .onClick(()=>{
          this.text += '-'
        })
    }
    .width("100%")
    .height("100%")
  }
}

更多关于HarmonyOS 鸿蒙Next Tabs里的barMode中的ScrollableBarModeOptions的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,Next Tabs组件的barMode属性用于定义标签栏的显示模式,其中ScrollableBarModeOptionsbarMode的一个可选值,用于指定标签栏以可滚动的方式展示。

ScrollableBarModeOptions通常包含一系列配置选项,用于控制标签栏在可滚动模式下的行为。这些选项可能包括但不限于:

  • 滚动速度:定义用户滑动手指时标签栏滚动的速度。
  • 弹性效果:当滚动到标签栏的边界时,是否提供弹性反馈效果。
  • 滚动条显示:是否显示滚动条以指示当前滚动位置。
  • 循环滚动:是否允许标签栏在到达最左或最右端时继续滚动,形成循环效果。

需要注意的是,具体的ScrollableBarModeOptions配置选项及其行为可能因HarmonyOS的版本和具体实现而有所不同。在开发过程中,开发者应参考最新的HarmonyOS开发文档或API指南,以获取关于ScrollableBarModeOptions的准确信息和配置方法。

如果在使用ScrollableBarModeOptions时遇到问题,建议检查以下几点:

  • 确保HarmonyOS版本支持该选项。
  • 仔细阅读并遵循官方文档中的配置指南。
  • 检查代码中是否有其他属性或设置与ScrollableBarModeOptions冲突。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部