HarmonyOS 鸿蒙Next 请教一个TABS组件问题

HarmonyOS 鸿蒙Next 请教一个TABS组件问题

Tabs({ index: this.currentIndex, controller: this.controller }) {
  //资讯 TabContent()
  {
    Text("1").width(CommonConstants.FULL_PERCENT).height(30)
    Index_InfoView()
  }
  .onWillShow(() => {
    //在这里如何可以访问到Index_InfoView这个组件中的一个方法,Index_InfoView要如何编写
  }) //直播
  TabContent() {
    //  Text("2").width(CommonConstants.FULL_PERCENT).height(30) Index_ZhiboView()
  }
}

更多关于HarmonyOS 鸿蒙Next 请教一个TABS组件问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

here is the code:

1.index.ets


// xxx.ets

import { ChildRef, test2 } from './test2'

[@Entry](/user/Entry)

[@Component](/user/Component)

struct TabsExample {

  [@State](/user/State) fontColor: string = '#182431'

  [@State](/user/State) selectedFontColor: string = '#007DFF'

  [@State](/user/State) currentIndex: number = 0

  private controller: TabsController = new TabsController()

  [@Builder](/user/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 })

      Divider()

        .strokeWidth(2)

        .color('#007DFF')

        .opacity(this.currentIndex === index ? 1 : 0)

    }.width('100%')

  }

  build() {

    Column() {

      Tabs({ barPosition: BarPosition.Start, index: this.currentIndex, controller: this.controller }) {

        TabContent() {

         test2({controller:ChildRef})

        }.tabBar(this.tabBuilder(0, 'green'))

          .onWillShow(()=>{

            ChildRef.changeText('Parent调用childer的changeText')

          })

        TabContent() {

          Column().width('100%').height('100%').backgroundColor('#007DFF')

        }.tabBar(this.tabBuilder(1, 'blue'))

      }

      .vertical(false)

      .barMode(BarMode.Fixed)

      .barWidth(360)

      .barHeight(56)

      .animationDuration(400)

      .onChange((index: number) => {

        this.currentIndex = index

      })

      .width(360)

      .height(296)

      .margin({ top: 52 })

      .backgroundColor('#F1F3F5')

    }.width('100%')

  }

}

2.test2.ets


[@Component](/user/Component)

export  struct  test2{

  private controller: ChildController = new ChildController();

  aboutToAppear() {

    if(this.controller) {

      this.controller.changeText = this.changeText

    }

  }

  private changeText = (value: string) =>{

    console.log('bbbbbb')

  }

  build() {

    Text('tests2')

  }

}

class ChildController {

  changeText = (value: string) => {

  }

}

export let ChildRef = new ChildController()

更多关于HarmonyOS 鸿蒙Next 请教一个TABS组件问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对你提出的HarmonyOS 鸿蒙Next TABS组件问题,以下是一些专业解答:

TABS组件是一种常见的用户界面组件,用于容纳多个选项卡。在HarmonyOS鸿蒙Next中,TABS组件的tabbar对齐方式通常与布局管理器(如DirectionalLayout、FlexLayout等)的属性设置有关。

若希望设置tabbar的对齐方式,可以尝试以下方法:

  • 布局管理器属性:通过设置DirectionalLayout的alignment属性,可以控制子组件(包括tabbar中的tab项)的对齐方式。alignment属性可以设置为start、center、end等,分别实现左对齐、居中对齐和右对齐。
  • TABS组件属性:如果TABS组件本身提供了对齐方式的属性(如tabAlignment),也可以直接使用该属性进行设置。不过,具体可用的属性及其取值范围需参考鸿蒙系统的官方文档或API参考手册。

请注意,不同版本的鸿蒙系统可能有所不同,建议查阅正在使用的鸿蒙系统版本的官方文档,以确保获取最准确的信息。

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

回到顶部