美文网首页Harmony轮子库
【鸿蒙】自定义选项卡组件

【鸿蒙】自定义选项卡组件

作者: irenb | 来源:发表于2024-05-06 09:42 被阅读0次

1. 封装 TabsComp 组件

/// 自定义选项卡组件
@Component
export default struct TabsComp {
  private tabsController: TabsController = new TabsController()
  // 选项卡下标,默认为第一个
  @Link selectIndex: number
  @Prop tabTitles: string[]
  // @BuilderParam 该装饰器用于声明任意UI描述的一个元素,类似slot占位符。
  // 用于传入代码块/函数,类似于block
  // 自定义组件插槽(方便外部调用时传入其他子组件),() => void 表示变量是函数类型(一般是构造函数)
  @BuilderParam child: () => void
  // tabBar 背景颜色
  tabBarColor: ResourceColor = Color.White

  build() {
    Column() {
      // barPosition设置Tabs的页签位置,跟vertical属性强关联
      // index设置初始页签索引
      // controller设置Tabs控制器,用于控制Tabs组件进行页签切换
      Tabs({ barPosition: BarPosition.Start, index: this.selectIndex, controller: this.tabsController }) {
        ForEach(this.tabTitles, (title: string, index) => {
          TabContent() {
            this.child() // 在这里插入额外的子组件
          }
          // 系统TabBar(带过渡动画)
          .tabBar(new SubTabBarStyle(title))
        })
      }
      // 可滚动导航栏
      .barMode(BarMode.Scrollable)
      .barBackgroundColor(this.tabBarColor)
      .animationDuration(300)
      // 滑动切换导航栏
      .onChange((index) => {
        // 监听索引index的变化,实现页签内容的切换。
        this.selectIndex = index
      })
    }
    .height('100%')
    .width('100%')
  }
}

2. 组件使用

import TabsComp from '../../components/TabsComp'

@Entry
@Component
export default struct TestPage {
  @State selectIndex: number = 0
  @State tabTitles: string[] = ['菜单1', '菜单2', '菜单3', '菜单4', '菜单5']

  build() {
    Column() {
      TabsComp({ selectIndex: this.selectIndex, tabTitles: this.tabTitles }) {
        Text(`${this.tabTitles[this.selectIndex]}-内容页`).fontSize(30)
      }
    }
    .width('100%')
    .height('100%')
    .backgroundColor('#f1f2f3')
  }
}

3. 效果

相关文章

  • 自定义组件

    创建自定义组件 使用自定义组件

  • 组件

    1)自带组件- 选项卡Tabshttp://ionicframework.com/docs/components/...

  • Excel自定义选项卡和sheet标签栏

    带宏的excel打开,看不到默认的菜单选项卡,只有自定义的选项卡,如何更改选项卡。而且下面的sheet标签栏也不见...

  • 微信小程序-自定义组件

    一、自定义组件介绍 微信小程序提供了自定义组件扩展机制,允许我们使用自定义组件的方式来构建页面。 自定义组件可以使...

  • vue 自定义组件(一)全局、局部组件

    vue自定义组件分为局部组件和全局组件 全局组件 全局组件格式template 是模板props 是自定义组件用到...

  • UITabBarController和UINavigationC

    UITabBarController和UINavigationController的自定义 选项卡控制器( UIT...

  • vue2.0组件间传值的方法汇总

    1、组件间的传值 1.1 父组件向子组件传值 子组件自定义一个属性 父组件通过自定义属性绑定值 子组件调用自定义属...

  • 调用自定义组件中的方法

    创建自定义组件 .json .js 页面中引入自定义组件 .json .xml 页面中调用自定义组件的方法 .js

  • 小程序的自定义组件

    小程序允许我们使用自定义组件的方式来构建页面。 自定义组件 1. 创建自定义组件 类似于页面,一个自定义组件由 j...

  • 选项卡组件

    关键:用自定义的配置去覆盖默认的配置。 HTML JavaScript 首先我们把需要代码包含在一个封闭自执行函数...

网友评论

    本文标题:【鸿蒙】自定义选项卡组件

    本文链接:https://www.haomeiwen.com/subject/aaslfjtx.html