文章目录
- 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'})}}运行效果,当点击需要渐隐:
当不渐隐,两头是清晰的:
代码解析
状态变量控制
@State selfFadingFade: boolean = true:定义响应式状态变量,通过按钮点击动态修改值,同步控制两个Tabs组件的渐隐效果。横向Tabs配置
vertical(false):设置为横向Tabs,TabBar水平排列;barPosition.End:TabBar固定在组件底部;- 核心生效属性:
scrollable(true)+barMode(BarMode.Scrollable)+fadingEdge(this.selfFadingFade)。
纵向Tabs配置
vertical(true):设置为纵向Tabs,TabBar垂直排列;barPosition.Start:TabBar固定在组件左侧;- 适配垂直布局:新增
barWidth(80)设置TabBar宽度,配合barHeight控制可视区域。
交互控制
两个按钮分别绑定onClick事件,修改selfFadingFade的值,实现渐隐/无渐隐效果的实时切换。
总结
fadingEdge是HarmonyOS6 Tabs组件优化TabBar视觉效果的关键属性,通过简单的布尔值配置,即可实现滚动页签的渐隐效果。开发中仅需满足滚动模式+开启滚动两个前提条件,结合响应式状态即可完成动态控制,有效提升应用界面的精致度和用户体验。
- 核心属性:
fadingEdge(boolean)控制TabBar渐隐,仅滚动模式生效; - 必备配置:
scrollable(true)+barMode(BarMode.Scrollable); - 适用方向:横向、纵向Tabs均支持;
- 动态控制:结合
@State变量,可通过交互实时切换渐隐效果。
如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力