往期鸿蒙全套实战文章必看:(文中附带全栈鸿蒙学习资料)
Tabs
通过页签进行内容视图切换的容器组件,每个页签对应一个内容视图。
说明
该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
该组件从API Version 11开始默认支持安全区避让特性(默认值为:expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.BOTTOM])),开发者可以重写该属性覆盖默认行为,API Version 11之前的版本需配合expandSafeArea属性实现安全区避让。
子组件
不支持自定义组件作为子组件, 仅可包含子组件TabContent, 以及渲染控制类型if/else和ForEach, 并且if/else和ForEach下也仅支持TabContent, 不支持自定义组件。
说明
Tabs子组件的visibility属性设置为None,或者visibility属性设置为Hidden时,对应子组件不显示,但依然会在视窗内占位。
Tabs子组件TabContent显示之后不会销毁,若需要页面懒加载和释放。
接口
Tabs(value?: {barPosition?: BarPosition, index?: number, controller?: TabsController})
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
barPosition | BarPosition | 否 | 设置Tabs的页签位置。 默认值:BarPosition.Start |
index | number | 否 | 设置当前显示页签的索引。 默认值:0 说明: 设置为小于0的值时按默认值显示。 可选值为[0, TabContent子节点数量-1]。 直接修改index跳页时,切换动效不生效。 使用TabController的changeIndex时,默认生效切换动效,可以设置animationDuration为0关闭动画。 从API version 10开始,该参数支持$$双向绑定变量。 Tabs重建、系统资源切换(如系统字体切换、系统深浅色切换)或者组件属性变化时,会跳转到index对应的页面。若需要在上述情况下不跳转,建议使用双向绑定。 |
controller | TabsController | 否 | 设置Tabs控制器。 |
BarPosition枚举说明
Tabs页签位置枚举。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
名称 | 描述 |
---|---|
Start | vertical属性方法设置为true时,页签位于容器左侧;vertical属性方法设置为false时,页签位于容器顶部。 |
End | vertical属性方法设置为true时,页签位于容器右侧;vertical属性方法设置为false时,页签位于容器底部。 |
属性
除支持通用属性外,还支持以下属性:
vertical
vertical(value: boolean)
设置是否为纵向Tab。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
value | boolean | 是 | 是否为纵向Tab。 默认值:false,横向Tabs,为true时纵向Tabs。 当横向Tabs设置height为auto时,Tabs组件高度自适应子组件高度,即为tabBar高度+divider线宽+TabContent高度+上下padding值+上下border宽度。 当纵向Tabs设置width为auto时,Tabs组件宽度自适应子组件宽度,即为tabBar宽度+divider线宽+TabContent宽度+左右padding值+左右border宽度。 尽量保持每一个页面中的子组件尺寸大小一致,避免滑动页面时出现页面切换动画跳动现象。 |
scrollable
scrollable(value: boolean)
设置是否可以通过滑动页面进行页面切换。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
value | boolean | 是 | 是否可以通过滑动页面进行页面切换。 默认值:true,可以通过滑动页面进行页面切换。为false时不可滑动切换页面。 |
barMode
barMode(value: BarMode, options?: ScrollableBarModeOptions)
设置TabBar布局模式。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
value | BarMode | 是 | 布局模式。 默认值:BarMode.Fixed |
options10+ | ScrollableBarModeOptions | 否 | Scrollable模式下的TabBar的布局样式。 说明: 仅Scrollable且水平模式下有效。 |
barMode10+
barMode(value: BarMode.Fixed)
设置TabBar布局模式为BarMode.Fixed。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
value | BarMode.Fixed | 是 | 所有TabBar会平均分配barWidth宽度(纵向时平均分配barHeight高度)。 |
barMode10+
barMode(value: BarMode.Scrollable, options: ScrollableBarModeOptions)
设置TabBar布局模式为BarMode.Scrollable。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
value | BarMode.Scrollable | 是 | 所有TabBar都使用实际布局宽度,超过总宽度(横向Tabs的barWidth,纵向Tabs的barHeight)后可滑动。 |
options | ScrollableBarModeOptions | 是 | Scrollable模式下的TabBar的布局样式。 说明: 仅水平模式下有效。 |
barWidth
barWidth(value: Length)
设置TabBar的宽度值。设置为小于0或大于Tabs宽度值时,按默认值显示。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
value | Length8+ | 是 | TabBar的宽度值。 默认值: 未设置SubTabBarStyle和BottomTabBarStyle的TabBar且vertical属性为false时,默认值为Tabs的宽度。 未设置SubTabBarStyle和BottomTabBarStyle的TabBar且vertical属性为true时,默认值为56vp。 设置SubTabBarStyle样式且vertical属性为false时,默认值为Tabs的宽度。 设置SubTabBarStyle样式且vertical属性为true时,默认值为56vp。 设置BottomTabBarStyle样式且vertical属性为true时,默认值为96vp。 设置BottomTabBarStyle样式且vertical属性为false时,默认值为Tabs的宽度。 |
barHeight
barHeight(value: Length)
设置TabBar的高度值。设置为'auto'时,TabBar自适应子组件高度,仅在水平模式下有效。设置为小于0或大于Tabs高度值时,按默认值显示。若设置barHeight为固定值后,TabBar无法扩展底部安全区。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力ÿ