#鸿蒙通关秘籍#如何使用Tab组件来自定义增删Tab页签?

HarmonyOS
2024-12-06 13:10:40
793浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
云海谜QA

使用HarmonyOS中的Tab组件实现自定义增删Tab页签,可以按照以下步骤进行:

  1. 在Tabs组件中将barHeight属性设置为0,以隐藏默认的TabBar。

    Tabs() {
        ...
    }
    .barHeight(0) // 隐藏tab组件自带的tabbar
    
    • 1.
    • 2.
    • 3.
    • 4.
  2. 通过@Link修饰符,将自定义TabBar组件与Tabs组件进行双向绑定,将focusIndextabArray这两个变量进行联动操作。

    //TabSheetComponent.ets
    @Component
    struct TabSheetComponent {
        @Link tabArray: Array<number>
        @Link focusIndex: number
    
        build() {
            ...
        }
    }
    
    //HandleTabs.ets
    @Component
    struct HandleTabs {
        @State tabArray: Array<number> = [0]; // 控制页签渲染的数组
        @State focusIndex: number = 0; // Tabs组件当前显示的页签下标
    
        build() {
            ...
    
            TabSheetComponent({ tabArray: $tabArray, focusIndex: $focusIndex })
            Tabs({ index: this.focusIndex }) {
                ForEach(this.tabArray,()=>{
                    ...
                })
            }
    
            ...
        }
    }
    
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
    • 16.
    • 17.
    • 18.
    • 19.
    • 20.
    • 21.
    • 22.
    • 23.
    • 24.
    • 25.
    • 26.
    • 27.
    • 28.
    • 29.
    • 30.
  3. 使用交互事件在自定义TabBar中修改focusIndextabArray的值,实现页签的增删功能。

    //TabSheetComponent.ets
    Image('add') // 新增页签
        .onClick(() => {
            this.tabArray.push(item)
        })
    
    ...
    
    Image('close') // 关闭指定索引页签
        .onClick(() => {
            this.tabArray.splice(index, 1)
        })
    
    ...
    
    this.focusIndex = index; // 跳转到指定索引值
    
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
    • 16.
分享
微博
QQ
微信
回复
2024-12-06 15:41:29


相关问题
HarmonyOS 如何自定义tab
1268浏览 • 2回复 待解决
HarmonyOS tab组件该怎么实现
494浏览 • 1回复 待解决
HarmonyOS 怎么自定义Tab的Tabbar
555浏览 • 1回复 待解决
希望Tabs的位置是否支持自定义
943浏览 • 1回复 待解决
恭喜您,今日已阅读两篇内容,特奖励+2声望, 快来领取吧。