HarmonyOS6 ArkTS Tabs 设置TabBar渐隐
2026/4/14 11:01:49 网站建设 项目流程

文章目录

    • fadingEdge属性基础
      • 1. 属性定义
      • 2. 核心作用
    • 完整代码
      • 代码解析
    • 总结

fadingEdge属性基础

1. 属性定义

fadingEdge是Tabs组件的核心属性,用于控制滚动型TabBar的首尾渐隐效果,属性定义如下:

fadingEdge(value:boolean)
  • 参数类型:boolean(布尔值)
  • 默认值:true(默认开启渐隐效果)
  • 作用场景:仅当Tabs的barMode设置为BarMode.Scrollable(滚动模式)时生效,固定模式TabBar无渐隐效果。

2. 核心作用

当TabBar页签数量超出组件可视区域,需要横向/纵向滚动时:

  • fadingEdge=true:TabBar滚动方向的首尾会显示渐变遮罩,页签边缘平滑过渡,无生硬截断;
  • fadingEdge=false:TabBar首尾无渐变遮罩,页签直接截断,视觉效果生硬。

完整代码

// xxx.ets@Entry@Componentstruct TabsOpaque{// 控制渐隐效果的状态变量@StateselfFadingFade:boolean=true;// 横向Tabs控制器privatecontroller:TabsController=newTabsController();// 纵向Tabs控制器privatecontroller1:TabsController=newTabsController();build(){Column(){// 按钮:开启子页签渐隐Button('子页签设置渐隐').width('100%').margin({bottom:'12vp'}).onClick((event?:ClickEvent)=>{this.selfFadingFade=true;})// 按钮:关闭子页签渐隐Button('子页签设置不渐隐').width('100%').margin({bottom:'12vp'}).onClick((event?:ClickEvent)=>{this.selfFadingFade=false;})// 1. 横向滚动Tabs组件(barPosition.End:TabBar在底部)Tabs({barPosition:BarPosition.End,controller:this.controller}){// 多个TabContent,模拟页签数量溢出场景TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Pink)}.tabBar('pink')TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Yellow)}.tabBar('yellow')TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Blue)}.tabBar('blue')TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Green)}.tabBar('green')TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Green)}.tabBar('green')TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Green)}.tabBar('green')TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Green)}.tabBar('green')TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Green)}.tabBar('green')}.vertical(false)// 横向Tabs.scrollable(true)// 开启滚动.barMode(BarMode.Scrollable)// 滚动模式(必选).barHeight(80)// TabBar高度.animationDuration(400)// 切换动画时长.onChange((index:number)=>{console.info('横向Tabs当前索引:'+index.toString());}).fadingEdge(this.selfFadingFade)// 动态控制渐隐效果.height('30%').width('100%')// 2. 纵向滚动Tabs组件(barPosition.Start:TabBar在左侧)Tabs({barPosition:BarPosition.Start,controller:this.controller1}){TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Pink)}.tabBar('pink')TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Yellow)}.tabBar('yellow')TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Blue)}.tabBar('blue')TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Green)}.tabBar('green')TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Green)}.tabBar('green')TabContent(){Column().width('100%').height('100%').backgroundColor(Color.Green)}.tabBar('green')}.vertical(true)// 纵向Tabs.scrollable(true)// 开启滚动.barMode(BarMode.Scrollable)// 滚动模式(必选).barHeight(200)// 纵向TabBar高度.barWidth(80)// 纵向TabBar宽度.animationDuration(400)// 切换动画时长.onChange((index:number)=>{console.info('纵向Tabs当前索引:'+index.toString());}).fadingEdge(this.selfFadingFade)// 动态控制渐隐效果.height('30%').width('100%')}.padding({top:'24vp',left:'24vp',right:'24vp'})}}

运行效果,当点击需要渐隐:

当不渐隐,两头是清晰的:

代码解析

  1. 状态变量控制
    @State selfFadingFade: boolean = true:定义响应式状态变量,通过按钮点击动态修改值,同步控制两个Tabs组件的渐隐效果。

  2. 横向Tabs配置

    • vertical(false):设置为横向Tabs,TabBar水平排列;
    • barPosition.End:TabBar固定在组件底部;
    • 核心生效属性:scrollable(true)+barMode(BarMode.Scrollable)+fadingEdge(this.selfFadingFade)
  3. 纵向Tabs配置

    • vertical(true):设置为纵向Tabs,TabBar垂直排列;
    • barPosition.Start:TabBar固定在组件左侧;
    • 适配垂直布局:新增barWidth(80)设置TabBar宽度,配合barHeight控制可视区域。
  4. 交互控制
    两个按钮分别绑定onClick事件,修改selfFadingFade的值,实现渐隐/无渐隐效果的实时切换。

总结

fadingEdge是HarmonyOS6 Tabs组件优化TabBar视觉效果的关键属性,通过简单的布尔值配置,即可实现滚动页签的渐隐效果。开发中仅需满足滚动模式+开启滚动两个前提条件,结合响应式状态即可完成动态控制,有效提升应用界面的精致度和用户体验。

  1. 核心属性fadingEdge(boolean)控制TabBar渐隐,仅滚动模式生效;
  2. 必备配置scrollable(true)+barMode(BarMode.Scrollable)
  3. 适用方向:横向、纵向Tabs均支持;
  4. 动态控制:结合@State变量,可通过交互实时切换渐隐效果。

如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询