harmony 鸿蒙SegmentButtonV2

  • 2025-06-12
  • 浏览 (3)

SegmentButtonV2

分段按钮组件,创建页签型、单选或多选的胶囊型分段按钮。

说明:

该组件从 API version 18 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

导入模块

import { TabSegmentButtonV2, CapsuleSegmentButtonV2, MultiCapsuleSegmentButtonV2, SegmentButtonV2Items } from '@kit.ArkUI';

子组件

TabSegmentButtonV2

TabSegmentButtonV2({
  items: SegmentButtonV2Items,
  selectedIndex: number,
  $selectedIndex?: OnSelectedIndexChange,
  onItemClicked?: Callback<number>,
  itemMinFontScale?: number|Resource,
  itemMaxFontScale?: number|Resource,
  itemSpace?: LengthMetrics,
  itemFontSize?: LengthMetrics,
  itemSelectedFontSize?: LengthMetrics,
  itemFontColor?: ColorMetrics,
  itemSelectedFontColor?: ColorMetrics,
  itemFontWeight?: FontWeight,
  itemSelectedFontWeight?: FontWeight,
  itemBorderRadius?: LengthMetrics,
  itemSelectedBackgroundColor?: ColorMetrics,
  itemIconSize?: SizeT<LengthMetrics>,
  itemIconFillColor?: ColorMetrics,
  itemSelectedIconFillColor?: ColorMetrics,
  itemSymbolFontSize?: LengthMetrics,
  itemSymbolFontColor?: ColorMetrics,
  itemSelectedSymbolFontColor?: ColorMetrics,
  itemMinHeight?: LengthMetrics,
  itemPadding?: LocalizedPadding,
  itemShadow?: ShadowOptions|ShadowStyle,
  buttonBackgroundColor?: ColorMetrics,
  buttonBackgroundBlurStyle?: BlurStyle,
  buttonBackgroundBlurStyleOptions?: BackgroundBlurStyleOptions,
  buttonBackgroundEffect?: BackgroundEffectOptions,
  buttonBorderRadius?: LengthMetrics, 
  buttonMinHeight?: LengthMetrics, 
  buttonPadding?: LengthMetrics, 
  languageDirection?: Direction 
})

装饰器类型: @ComponentV2

原子化服务API: 从 API version 18 开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 只读 可选 装饰器类型 说明
items SegmentButtonV2Items @Require
@Param
用于配置分段按钮的选项集合信息。
selectedIndex number @Require
@Param
用于配置分段按钮被选中的选项下标。
$selectedIndex OnSelectedIndexChange @Event 用于配置分段按钮选中项变更时触发的回调函数。
onItemClicked Callback<number> @Event 用于配置分段按钮选项被点击时触发的回调函数。
buttonBackgroundColor ColorMetrics @Param 用于配置分段按钮背板颜色。
默认值:$r('sys.color.segment_button_v2_tab_button_background')
buttonBackgroundBlurStyle BlurStyle @Param 用于配置分段按钮背板模糊材质。
默认值:undefined
buttonBackgroundBlurStyleOptions BackgroundBlurStyleOptions @Param 用于配置分段按钮背板模糊材质配置参数。
默认值:undefined
buttonBackgroundEffect BackgroundEffectOptions @Param 用于配置分段按钮背板模糊配置参数。
默认值:undefined
buttonBorderRadius LengthMetrics @Param 用于配置分段按钮背板的圆角大小。
取值范围:[0, +∞)
默认值:$r('sys.float.segment_button_v2_background_corner_radius')
buttonMinHeight LengthMetrics @Param 用于配置分段按钮最小的高度。
取值范围:[0, +∞)
默认值:只有纯文本或者纯图标选项时:$r('sys.float.segment_button_v2_singleline_background_height');有图文混合的选项时:$r('sys.float.segment_button_v2_doubleline_background_height')
buttonPadding LengthMetrics @Param 用于配置分段按钮的内边距。
取值范围:[0, +∞)
默认值:$r('sys.float.padding_level1')
itemSelectedBackgroundColor ColorMetrics @Param 用于配置分段按钮选中的选项背景颜色。
默认值:$r('sys.color.segment_button_v2_tab_selected_item_background')
itemMinHeight LengthMetrics @Param 用于配置分段按钮选项的最小高度。
取值范围:[0, +∞)
默认值:
只有纯文本或者纯图标选项时:$r('sys.float.segment_button_v2_singleline_selected_height');有图文混合的选项时:$r('sys.float.segment_button_v2_doubleline_selected_height')
itemPadding LocalizedPadding @Param 用于配置分段按钮选项的内边距。
默认值:{ top: LengthMetrics.resource($r('sys.float.padding_level2')), bottom: LengthMetrics.resource($r('sys.float.padding_level2')), start: LengthMetrics.resource($r('sys.float.padding_level4')), end: LengthMetrics.resource($r('sys.float.padding_level4')) }
itemShadow ShadowOptions |ShadowStyle @Param 用于配置分段按钮选项的阴影。
默认值:ShadowStyle.OUTER_DEFAULT_XS
itemSpace LengthMetrics @Param 用于配置分段按钮选项之间的间隔。
取值范围:[0, +∞)
默认值:LengthMetrics.vp(0)
说明:
不支持设置百分比类型,异常值按默认值处理。
itemMinFontScale number |Resource @Param 用于配置分段按钮选项文字大小可以缩小到的最小字体大小缩放倍数。
取值范围:[0, 1]
默认值:0
说明:
设置的值小于 0 时,按值为 0 处理,设置的值大于 1,按值为 1 处理,异常值默认不生效。
itemMaxFontScale number |Resource @Param 用于配置分段按钮选项文字大小可以放大到的最大字体大小放大倍数。
取值范围:[1, 2]
默认值:1
说明:
设置的值小于 1 时,按值为 1 处理,设置的值大于 2,按值为 2 处理,异常值默认不生效。
itemFontSize LengthMetrics @Param 用于配置分段按钮非选中的选项字体大小。
取值范围:[0, +∞)
默认值:14fp
说明:
不支持设置百分比类型,异常值按默认值处理。
itemSelectedFontSize LengthMetrics @Param 用于配置分段按钮选中的选项字体大小。
取值范围:[0, +∞)
默认值:14fp
说明:
不支持设置百分比类型,异常值按默认值处理。
itemFontColor ColorMetrics @Param 用于配置分段按钮非选中的选项字体颜色。
默认值:$r('sys.color.font_secondary')
itemSelectedFontColor ColorMetrics @Param 用于配置分段按钮选中的选项字体颜色。
默认值:$r('sys.color.font_primary')
itemFontWeight FontWeight @Param 用于配置分段按钮非选中的选项字体字重。
默认值:FontWeight.Medium
itemSelectedFontWeight FontWeight @Param 用于配置分段按钮选中的选项字体字重。
默认值:FontWeight.Medium
itemBorderRadius LengthMetrics @Param 用于配置分段按钮选项的圆角大小。
取值范围:[0, +∞)
默认值:$r('sys.float.segment_button_v2_selected_corner_radius')
itemIconSize SizeT<LengthMetrics> @Param 用于配置分段按钮选项中 Image 类型图标大小。
取值范围:[0, +∞)
默认值:{ width: LengthMetrics.vp(24), height: LengthMetrics.vp(24) }
itemIconFillColor ColorMetrics @Param 用于配置分段按钮非选中的选项图标颜色。
默认值:$r('sys.color.font_secondary')
itemSelectedIconFillColor ColorMetrics @Param 用于配置分段按钮选中的选项图标颜色。
默认值:$r('sys.color.font_primary')
itemSymbolFontSize LengthMetrics @Param 用于配置分段按钮选项中HM Symbol类型图标大小。
取值范围:[0, +∞)
默认值:20fp
说明:
不支持设置百分比类型,异常值按默认值处理。
itemSymbolFontColor ColorMetrics @Param 用于配置分段按钮非选中的选项中HM Symbol类型图标颜色。
默认值:$r('sys.color.font_secondary')
itemSelectedSymbolFontColor ColorMetrics @Param 用于配置分段按钮选中的选项中HM Symbol类型图标颜色。
默认值:$r('sys.color.font_primary')
languageDirection Direction @Param 用于配置分段按钮的布局方向。
默认值:Direction.Auto

CapsuleSegmentButtonV2

CapsuleSegmentButtonV2({
  items: SegmentButtonV2Items,
  selectedIndex: number,
  $selectedIndex?: OnSelectedIndexChange,
  onItemClicked?: Callback<number>,
  itemMinFontScale?: number|Resource,
  itemMaxFontScale?: number|Resource,
  itemSpace?: LengthMetrics,
  itemFontSize?: LengthMetrics,
  itemSelectedFontSize?: LengthMetrics,
  itemFontColor?: ColorMetrics,
  itemSelectedFontColor?: ColorMetrics,
  itemFontWeight?: FontWeight,
  itemSelectedFontWeight?: FontWeight,
  itemBorderRadius?: LengthMetrics,
  itemSelectedBackgroundColor?: ColorMetrics,
  itemIconSize?: SizeT<LengthMetrics>,
  itemIconFillColor?: ColorMetrics,
  itemSelectedIconFillColor?: ColorMetrics,
  itemSymbolFontSize?: LengthMetrics,
  itemSymbolFontColor?: ColorMetrics,
  itemSelectedSymbolFontColor?: ColorMetrics,
  itemMinHeight?: LengthMetrics,
  itemPadding?: LocalizedPadding,
  itemShadow?: ShadowOptions|ShadowStyle,
  buttonBackgroundColor?: ColorMetrics,
  buttonBackgroundBlurStyle?: BlurStyle,
  buttonBackgroundBlurStyleOptions?: BackgroundBlurStyleOptions,
  buttonBackgroundEffect?: BackgroundEffectOptions,
  buttonBorderRadius?: LengthMetrics,
  buttonMinHeight?: LengthMetrics,
  buttonPadding?: LengthMetrics,
  languageDirection?: Direction 
})

装饰器类型: @ComponentV2

原子化服务API: 从 API version 18 开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 只读 可选 装饰器类型 说明
items SegmentButtonV2Items @Require
@Param
用于配置分段按钮的选项集合信息。
selectedIndex number @Require
@Param
用于配置分段按钮被选中的选项下标。
$selectedIndex OnSelectedIndexChange @Event 用于配置分段按钮选中项变更时触发的回调函数。
onItemClicked Callback<number> @Event 用于配置分段按钮选项被点击时触发的回调函数。
buttonBackgroundColor ColorMetrics @Param 用于配置分段按钮背板颜色。
默认值:$r('sys.color.segment_button_v2_tab_button_background')
buttonBackgroundBlurStyle BlurStyle @Param 用于配置分段按钮背板模糊材质。
默认值:undefined
buttonBackgroundBlurStyleOptions BackgroundBlurStyleOptions @Param 用于配置分段按钮背板模糊材质配置参数。
默认值:undefined
buttonBackgroundEffect BackgroundEffectOptions @Param 用于配置分段按钮背板模糊配置参数。
默认值:undefined
buttonBorderRadius LengthMetrics @Param 用于配置分段按钮背板的圆角大小。
取值范围:[0, +∞)
默认值:$r('sys.float.segment_button_v2_background_corner_radius')
buttonMinHeight LengthMetrics @Param 用于配置分段按钮最小的高度。
取值范围:[0, +∞)
默认值:只有纯文本或者纯图标选项时:$r('sys.float.segment_button_v2_singleline_background_height');有图文混合的选项时:$r('sys.float.segment_button_v2_doubleline_background_height')
buttonPadding LengthMetrics @Param 用于配置分段按钮的内边距。
取值范围:[0, +∞)
默认值:$r('sys.float.padding_level1')
itemSelectedBackgroundColor ColorMetrics @Param 用于配置分段按钮选中的选项背景颜色。
默认值:$r('sys.color.comp_background_emphasize')
itemMinHeight LengthMetrics @Param 用于配置分段按钮选项的最小高度。
取值范围:[0, +∞)
默认值:
只有纯文本或者纯图标选项时:$r('sys.float.segment_button_v2_singleline_selected_height');有图文混合的选项时:$r('sys.float.segment_button_v2_doubleline_selected_height')
itemPadding LocalizedPadding @Param 用于配置分段按钮选项的内边距。
默认值:{ top: LengthMetrics.resource($r('sys.float.padding_level2')), bottom: LengthMetrics.resource($r('sys.float.padding_level2')), start: LengthMetrics.resource($r('sys.float.padding_level4')), end: LengthMetrics.resource($r('sys.float.padding_level4')) }
itemShadow ShadowOptions |ShadowStyle @Param 用于配置分段按钮选项的阴影。
默认值:ShadowStyle.OUTER_DEFAULT_XS
itemSpace LengthMetrics @Param 用于配置分段按钮选项之间的间隔。
取值范围:[0, +∞)
默认值:LengthMetrics.vp(0)
说明:
不支持设置百分比类型,异常值按默认值处理。
itemMinFontScale number |Resource @Param 用于配置分段按钮选项文字大小可以缩小到的最小字体大小缩放倍数。
取值范围:[0, 1]
默认值:0
说明:
设置的值小于 0 时,按值为 0 处理,设置的值大于 1,按值为 1 处理,异常值默认不生效。
itemMaxFontScale number |Resource @Param 用于配置分段按钮选项文字大小可以放大到的最大字体大小放大倍数。
取值范围:[1, 2]
默认值:1
说明:
设置的值小于 1 时,按值为 1 处理,设置的值大于 2,按值为 2 处理,异常值默认不生效。
itemFontSize LengthMetrics @Param 用于配置分段按钮非选中的选项字体大小。
取值范围:[0, +∞)
默认值:14fp
说明:
不支持设置百分比类型,异常值按默认值处理。
itemSelectedFontSize LengthMetrics @Param 用于配置分段按钮选中的选项字体大小。
取值范围:[0, +∞)
默认值:14fp
说明:
不支持设置百分比类型,异常值按默认值处理。
itemFontColor ColorMetrics @Param 用于配置分段按钮非选中的选项字体颜色。
默认值:$r('sys.color.font_secondary')
itemSelectedFontColor ColorMetrics @Param 用于配置分段按钮选中的选项字体颜色。
默认值:$r('sys.color.font_on_primary')
itemFontWeight FontWeight @Param 用于配置分段按钮非选中的选项字体字重。
默认值:FontWeight.Medium
itemSelectedFontWeight FontWeight @Param 用于配置分段按钮选中的选项字体字重。
默认值:FontWeight.Medium
itemBorderRadius LengthMetrics @Param 用于配置分段按钮选项的圆角大小。
取值范围:[0, +∞)
默认值:$r('sys.float.segment_button_v2_selected_corner_radius')
itemIconSize SizeT<LengthMetrics> @Param 用于配置分段按钮选项中 Image 类型图标大小。
取值范围:[0, +∞)
默认值:{ width: LengthMetrics.vp(24), height: LengthMetrics.vp(24) }
itemIconFillColor ColorMetrics @Param 用于配置分段按钮非选中的选项图标颜色。
默认值:$r('sys.color.font_secondary')
itemSelectedIconFillColor ColorMetrics @Param 用于配置分段按钮选中的选项图标颜色。
默认值:$r('sys.color.font_on_primary')
itemSymbolFontSize LengthMetrics @Param 用于配置分段按钮选项中HM Symbol类型图标大小。
取值范围:[0, +∞)
默认值:20fp
说明:
不支持设置百分比类型,异常值按默认值处理。
itemSymbolFontColor ColorMetrics @Param 用于配置分段按钮非选中的选项中HM Symbol类型图标颜色。
默认值:$r('sys.color.font_secondary')
itemSelectedSymbolFontColor ColorMetrics @Param 用于配置分段按钮选中的选项中HM Symbol类型图标颜色。
默认值:$r('sys.color.font_on_primary')
languageDirection Direction @Param 用于配置分段按钮的布局方向。
默认值:Direction.Auto

MultiCapsuleSegmentButtonV2

MultiCapsuleSegmentButtonV2({
  items: SegmentButtonV2Items,
  selectedIndexes: number[],
  $selectedIndexes: OnSelectedIndexesChange,
  onItemClicked?: Callback<number>,
  itemMinFontScale?: number|Resource,
  itemMaxFontScale?: number|Resource,
  itemSpace?: LengthMetrics,
  itemFontColor?: ColorMetrics,
  itemSelectedFontColor?: ColorMetrics,
  itemFontSize?: LengthMetrics,
  itemSelectedFontSize?: LengthMetrics,
  itemFontWeight?: FontWeight,
  itemSelectedFontWeight?: FontWeight,
  itemBorderRadius?: LengthMetrics,
  itemBackgroundColor?: ColorMetrics,
  itemBackgroundEffect?: BackgroundEffectOptions,
  itemBackgroundBlurStyle?: BlurStyle,
  itemBackgroundBlurStyleOptions?: BackgroundBlurStyleOptions,
  itemSelectedBackgroundColor?: ColorMetrics,
  itemIconSize?: SizeT<LengthMetrics>,
  itemIconFillColor?: ColorMetrics,
  itemSelectedIconFillColor?: ColorMetrics,
  itemSymbolFontSize?: LengthMetrics,
  itemSymbolFontColor?: ColorMetrics,
  itemSelectedSymbolFontColor?: ColorMetrics,
  itemMinHeight?: LengthMetrics,
  itemPadding?: LocalizedPadding,
  languageDirection?: Direction
})

装饰器类型: @ComponentV2

原子化服务API: 从 API version 18 开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 只读 可选 装饰器类型 说明
items SegmentButtonV2Items @Require
@Param
用于配置分段按钮的选项集合信息。
selectedIndexes number[] @Require
@Param
用于配置分段按钮被选中的选项下标集合。
$selectedIndexes OnSelectedIndexesChange @Event 用于配置分段按钮选中项变更时触发的回调函数。
onItemClicked Callback<number> @Event 用于配置分段按钮选项被点击时触发的回调函数。
itemBackgroundColor ColorMetrics @Param 用于配置分段按钮非选中的选项背板颜色。
默认值:$r('sys.color.segment_button_v2_multi_capsule_button_background')
itemBackgroundEffect BackgroundEffectOptions @Param 用于配置分段按钮非选中的选项背板效果。
itemBackgroundBlurStyle BlurStyle @Param 用于配置分段按钮非选中的选项背板材质。
itemBackgroundBlurStyleOptions BackgroundBlurStyleOptions @Param 用于配置分段按钮非选中的选项背板材质配置参数。
itemSelectedBackgroundColor ColorMetrics @Param 用于配置分段按钮选中的选项背景颜色。
默认值:$r('sys.color.comp_background_emphasize')
itemMinHeight LengthMetrics @Param 用于配置分段按钮选项的最小高度。
取值范围:[0, +∞)
默认值:
只有纯文本或者纯图标选项时:$r('sys.float.segment_button_v2_singleline_selected_height');有图文混合的选项时:$r('sys.float.segment_button_v2_doubleline_selected_height')
itemPadding LocalizedPadding @Param 用于配置分段按钮选项的内边距。
默认值:{ top: LengthMetrics.resource($r('sys.float.padding_level2')), bottom: LengthMetrics.resource($r('sys.float.padding_level2')), start: LengthMetrics.resource($r('sys.float.padding_level4')), end: LengthMetrics.resource($r('sys.float.padding_level4')) }
itemSpace LengthMetrics @Param 用于配置分段按钮选项之间的间隔。
取值范围:[0, +∞)
默认值:LengthMetrics.vp(1)
说明:
不支持设置百分比类型,异常值按默认值处理。
itemMinFontScale number |Resource @Param 用于配置分段按钮选项文字大小可以缩小到的最小字体大小缩放倍数。
取值范围:[0, 1]
默认值:0
说明:
设置的值小于 0 时,按值为 0 处理,设置的值大于 1,按值为 1 处理,异常值默认不生效。
itemMaxFontScale number |Resource @Param 用于配置分段按钮选项文字大小可以放大到的最大字体大小放大倍数。
取值范围:[1, 2]
默认值:1
说明:
设置的值小于 1 时,按值为 1 处理,设置的值大于 2,按值为 2 处理,异常值默认不生效。
itemSelectedFontSize LengthMetrics @Param 用于配置分段按钮选中的选项字体大小。
取值范围:[0, +∞)
默认值:14fp
说明:
不支持设置百分比类型,异常值按默认值处理。
itemFontColor ColorMetrics @Param 用于配置分段按钮非选中的选项字体颜色。
默认值:$r('sys.color.font_secondary')
itemFontSize LengthMetrics @Param 用于配置分段按钮非选中的选项字体大小。
取值范围:[0, +∞)
默认值:14fp
说明:
不支持设置百分比类型,异常值按默认值处理。
itemSelectedFontColor ColorMetrics @Param 用于配置分段按钮选中的选项字体颜色。
默认值:$r('sys.color.font_on_primary')
itemFontWeight FontWeight @Param 用于配置分段按钮非选中的选项字体字重。
默认值:FontWeight.Medium
itemSelectedFontWeight FontWeight @Param 用于配置分段按钮选中的选项字体字重。
默认值:FontWeight.Medium
itemBorderRadius LengthMetrics @Param 用于配置分段按钮选项的圆角大小。
取值范围:[0, +∞)
默认值:$r('sys.float.segment_button_v2_multi_corner_radius')
itemIconSize SizeT<LengthMetrics> @Param 用于配置分段按钮选项中 Image 类型图标大小。
取值范围:[0, +∞)
默认值:{ width: LengthMetrics.vp(24), height: LengthMetrics.vp(24) }
itemIconFillColor ColorMetrics @Param 用于配置分段按钮非选中的选项图标颜色。
默认值:$r('sys.color.font_secondary')
itemSelectedIconFillColor ColorMetrics @Param 用于配置分段按钮选中的选项图标颜色。
默认值:$r('sys.color.font_on_primary')
itemSymbolFontSize LengthMetrics @Param 用于配置分段按钮选项中HM Symbol类型图标大小。
取值范围:[0, +∞)
默认值:20fp
说明:
不支持设置百分比类型,异常值按默认值处理。
itemSymbolFontColor ColorMetrics @Param 用于配置分段按钮非选中的选项中HM Symbol类型图标颜色。
默认值:$r('sys.color.font_secondary')
itemSelectedSymbolFontColor ColorMetrics @Param 用于配置分段按钮选中的选项中HM Symbol类型图标颜色。
默认值:$r('sys.color.font_on_primary')
languageDirection Direction @Param 用于配置分段按钮的布局方向。
默认值:Direction.Auto

SegmentButtonV2Items

分段按钮选项集合。

继承自 Array<SegmentButtonV2Item>

装饰器类型: @ObservedV2

原子化服务API: 从 API version 18 开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

constructor

constructor(items: SegmentButtonV2ItemOptions[])

构造函数。

原子化服务API: 从 API version 18 开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
items SegmentButtonV2ItemOptions[] 分段按钮选项配置参数集合。

hasHybrid

get hasHybrid():boolean

是否有图文混合选项。

原子化服务API: 从 API version 18 开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

返回值:

类型 说明
boolean 是否有图文混合选项。
true:有图文混合选项;false:无图文混合选项。

SegmentButtonV2Item

装饰器类型: @ObservedV2

原子化服务API: 从 API version 18 开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

属性

原子化服务API: 从 API version 18 开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称 类型 必填 装饰器类型 说明
text ResourceStr @Trace 分段按钮选项文本。
默认值:undefined
icon ResourceStr @Trace 分段按钮选项图片类型图标。
默认值:undefined
symbol Resource @Trace 分段按钮选项HM Symbol类型图标。
默认值:undefined
enabled boolean @Trace 分段按钮选项是否可用。
默认值:true。
true:分段按钮选项可用;false:分段按钮选项不可用。
textModifier TextModifier @Trace 分段按钮选项文本属性样式修改器。
默认值:undefined
iconModifier ImageModifier @Trace 分段按钮选项图片类型图标属性样式修改器。
默认值:undefined
symbolModifier SymbolGlyphModifier @Trace 分段按钮选项HM Symbol类型图标属性样式修改器。
默认值:undefined
accessibilityText ResourceStr @Trace 分段按钮选项无障碍文本。
默认值:””
accessibilityDescription ResourceStr @Trace 分段按钮选项无障碍说明。
默认值:””
accessibilityLevel string @Trace 分段按钮选项无障碍重要性
默认值:”auto”

说明

  1. symbolicon 同时配置时,symbol的显示优先级更高。
  2. symbolsymbolModifier 同时设置了HM Symbol资源,symbolModifier设置的资源显示优先级更高

constructor

constructor(options: SegmentButtonV2ItemOptions)

构造函数。

原子化服务API: 从 API version 18 开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
options SegmentButtonV2ItemOptions 分段按钮选项配置参数。

isHybrid

get isHybrid():boolean

分段按钮选项是否同时配置了文本和图标。

原子化服务API: 从 API version 18 开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

返回值:

类型 说明
boolean 选项是否同时配置了文本和图标。

SegmentButtonV2ItemOptions

分段按钮选项配置参数。

原子化服务API: 从 API version 18 开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

属性

名称 类型 必填 说明
text ResourceStr 分段按钮选项文本。
默认值:undefined
icon ResourceStr 分段按钮选项图片类型图标。
默认值:undefined
symbol Resource 分段按钮选项HM Symbol类型图标。
默认值:undefined
enabled boolean 分段按钮选项是否可用。
默认值:true。
true:分段按钮选项可用;false:分段按钮选项不可用。
textModifier TextModifier 分段按钮选项文本属性样式修改器。
默认值:undefined
iconModifier ImageModifier 分段按钮选项图片类型图标属性样式修改器。
默认值:undefined
symbolModifier SymbolGlyphModifier 分段按钮选项HM Symbol类型图标属性样式修改器。
默认值:undefined
accessibilityText ResourceStr 分段按钮选项无障碍文本。
默认值:””
accessibilityDescription ResourceStr 分段按钮选项无障碍说明。
默认值:””
accessibilityLevel string 分段按钮选项无障碍重要性
默认值:”auto”

说明

  1. symbolicon 同时配置时,symbol的显示优先级更高。
  2. symbolsymbolModifier 同时设置了HM Symbol资源,symbolModifier设置的资源显示优先级更高

OnSelectedIndexChange

type OnSelectedIndexChange = (selectedIndex: number) => void

单选的分段按钮选中项变更时调用的回调函数的类型。

原子化服务API: 从 API version 18 开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
selectedIndex number 分段按钮选项下标。

OnSelectedIndexesChange

type OnSelectedIndexesChange = (selectedIndexes: number[]) => void

多选的分段按钮选中项变更时调用的回调函数的类型。

原子化服务API: 从 API version 18 开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名 类型 必填 说明
selectedIndexes number[] 分段按钮选项下标集合。

示例

示例 1(页签型分段按钮)

此示例介绍页签型分段按钮的基本用法。

import { SegmentButtonV2Items, TabSegmentButtonV2 } from '@kit.ArkUI';

@Entry
@ComponentV2
struct TabSegmentButtonV2Example {
  @Local textItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { text: '手机' },
    { text: '平板' },
    { text: '2in1' },
    { text: '智能穿戴' },
  ]);
  @Local textSelectedIndex: number = 0;
  @Local imageItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { icon: $r('sys.media.ohos_ic_public_device_phone') },
    { icon: $r('sys.media.ohos_ic_public_device_pad') },
    { icon: $r('sys.media.ohos_ic_public_device_matebook') },
    { icon: $r('sys.media.ohos_ic_public_device_watch') },
  ]);
  @Local imageSelectedIndex: number = 0;
  @Local symbolItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { symbol: $r('sys.symbol.phone') },
    { symbol: $r('sys.symbol.pad') },
    { symbol: $r('sys.symbol.matebook') },
    { symbol: $r('sys.symbol.watch') },
  ]);
  @Local symbolSelectedIndex: number = 0;
  @Local hybridItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { text: '手机', symbol: $r('sys.symbol.phone') },
    { text: '平板', symbol: $r('sys.symbol.pad') },
    { text: '2in1', symbol: $r('sys.symbol.matebook') },
    { text: '智能穿戴', symbol: $r('sys.symbol.watch') },
  ]);
  @Local hybridSelectedIndex: number = 0;
  @Local freeItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { text: '年' },
    { text: '月' },
    { text: '周' },
    { text: '日' },
    { icon: $r('sys.media.ohos_ic_public_search_filled') },
  ]);
  @Local freeSelectedIndex: number = 0;

  build() {
    Scroll() {
      Column({ space: 12 }) {
        VCard({ title: '纯文本选项' }) {
          TabSegmentButtonV2({
            items: this.textItems,
            selectedIndex: this.textSelectedIndex!!,
          })
        }

        VCard({ title: '纯图标选项(Image)' }) {
          TabSegmentButtonV2({
            items: this.imageItems,
            selectedIndex: this.imageSelectedIndex!!,
          })
        }

        VCard({ title: '纯图标选项(Symbol)' }) {
          TabSegmentButtonV2({
            items: this.symbolItems,
            selectedIndex: this.symbolSelectedIndex!!,
          })
        }

        VCard({ title: '图文混合选项' }) {
          TabSegmentButtonV2({
            items: this.hybridItems,
            selectedIndex: this.hybridSelectedIndex!!,
          })
        }

        VCard({ title: '自由选项' }) {
          TabSegmentButtonV2({
            items: this.freeItems,
            selectedIndex: this.freeSelectedIndex!!,
          })
        }
      }
      .constraintSize({ minHeight: '100%' })
      .justifyContent(FlexAlign.Start)
      .padding(16)
    }
    .backgroundColor('#f1f3f5')
    .width('100%')
    .height('100%')
  }
}

@Builder
function Noop() {
}

@Component
export struct VCard {
  @Prop
  title: ResourceStr;
  @BuilderParam
  content: () => void = Noop;

  build() {
    Column({ space: 8 }) {
      if (this.title) {
        Text(this.title)
          .maxLines(1)
          .textOverflow({ overflow: TextOverflow.Ellipsis })
          .constraintSize({ maxWidth: '80%' })
      }
      this.content()
    }
    .backgroundColor(Color.White)
    .borderRadius(8)
    .padding(8)
    .width('100%')
  }
}

TabSegmentButtonV2

示例 2(单选的胶囊型分段按钮)

该示例介绍单选的胶囊型分段按钮的基本用法。

import { CapsuleSegmentButtonV2, SegmentButtonV2Items } from '@kit.ArkUI';

@Entry
@ComponentV2
struct CapsuleSegmentButtonV2Example {
  @Local textItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { text: '手机' },
    { text: '平板' },
    { text: '2in1' },
    { text: '智能穿戴' },
  ]);
  @Local textSelectedIndex: number = 0;
  @Local imageItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { icon: $r('sys.media.ohos_ic_public_device_phone') },
    { icon: $r('sys.media.ohos_ic_public_device_pad') },
    { icon: $r('sys.media.ohos_ic_public_device_matebook') },
    { icon: $r('sys.media.ohos_ic_public_device_watch') },
  ]);
  @Local imageSelectedIndex: number = 0;
  @Local symbolItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { symbol: $r('sys.symbol.phone') },
    { symbol: $r('sys.symbol.pad') },
    { symbol: $r('sys.symbol.matebook') },
    { symbol: $r('sys.symbol.watch') },
  ]);
  @Local symbolSelectedIndex: number = 0;
  @Local hybridItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { text: '手机', symbol: $r('sys.symbol.phone') },
    { text: '平板', symbol: $r('sys.symbol.pad') },
    { text: '2in1', symbol: $r('sys.symbol.matebook') },
    { text: '智能穿戴', symbol: $r('sys.symbol.watch') },
  ]);
  @Local hybridSelectedIndex: number = 0;
  @Local freeItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { text: '年' },
    { text: '月' },
    { text: '周' },
    { text: '日' },
    { icon: $r('sys.media.ohos_ic_public_search_filled') },
  ]);
  @Local freeSelectedIndex: number = 0;

  build() {
    Scroll() {
      Column({ space: 12 }) {
        VCard({ title: '纯文本选项' }) {
          CapsuleSegmentButtonV2({
            items: this.textItems,
            selectedIndex: this.textSelectedIndex!!,
          })
        }

        VCard({ title: '纯图标选项(Image)' }) {
          CapsuleSegmentButtonV2({
            items: this.imageItems,
            selectedIndex: this.imageSelectedIndex!!,
          })
        }

        VCard({ title: '纯图标选项(Symbol)' }) {
          CapsuleSegmentButtonV2({
            items: this.symbolItems,
            selectedIndex: this.symbolSelectedIndex!!,
          })
        }

        VCard({ title: '图文混合选项' }) {
          CapsuleSegmentButtonV2({
            items: this.hybridItems,
            selectedIndex: this.hybridSelectedIndex!!,
          })
        }

        VCard({ title: '自由选项' }) {
          CapsuleSegmentButtonV2({
            items: this.freeItems,
            selectedIndex: this.freeSelectedIndex!!,
          })
        }
      }
      .constraintSize({ minHeight: '100%' })
      .justifyContent(FlexAlign.Start)
      .padding(16)
    }
    .backgroundColor('#f1f3f5')
    .width('100%')
    .height('100%')
  }
}

@Builder
function Noop() {
}

@Component
export struct VCard {
  @Prop
  title: ResourceStr;
  @BuilderParam
  content: () => void = Noop;

  build() {
    Column({ space: 8 }) {
      if (this.title) {
        Text(this.title)
          .maxLines(1)
          .textOverflow({ overflow: TextOverflow.Ellipsis })
          .constraintSize({ maxWidth: '80%' })
      }
      this.content()
    }
    .backgroundColor(Color.White)
    .borderRadius(8)
    .padding(8)
    .width('100%')
  }
}

CapsuleSegmentButtonV2

示例 3(多选的胶囊型分段按钮)

该示例介绍多选的胶囊型分段按钮的基本用法。

import { MultiCapsuleSegmentButtonV2, SegmentButtonV2Items } from '@kit.ArkUI';

@Entry
@ComponentV2
struct MultiCapsuleSegmentButtonV2Example {
  @Local textItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { text: '手机' },
    { text: '平板' },
    { text: '2in1' },
    { text: '智能穿戴' },
  ]);
  @Local textSelectedIndexes: number[] = [0];
  @Local imageItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { icon: $r('sys.media.ohos_ic_public_device_phone') },
    { icon: $r('sys.media.ohos_ic_public_device_pad') },
    { icon: $r('sys.media.ohos_ic_public_device_matebook') },
    { icon: $r('sys.media.ohos_ic_public_device_watch') },
  ]);
  @Local imageSelectedIndexes: number[] = [0];
  @Local symbolItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { symbol: $r('sys.symbol.phone') },
    { symbol: $r('sys.symbol.pad') },
    { symbol: $r('sys.symbol.matebook') },
    { symbol: $r('sys.symbol.watch') },
  ]);
  @Local symbolSelectedIndexes: number[] = [0];
  @Local hybridItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { text: '手机', symbol: $r('sys.symbol.phone') },
    { text: '平板', symbol: $r('sys.symbol.pad') },
    { text: '2in1', symbol: $r('sys.symbol.matebook') },
    { text: '智能穿戴', symbol: $r('sys.symbol.watch') },
  ]);
  @Local hybridSelectedIndexes: number[] = [0];
  @Local freeItems: SegmentButtonV2Items = new SegmentButtonV2Items([
    { text: '年' },
    { text: '月' },
    { text: '周' },
    { text: '日' },
    { icon: $r('sys.media.ohos_ic_public_search_filled') },
  ]);
  @Local freeSelectedIndexes: number[] = [0];

  build() {
    Scroll() {
      Column({ space: 12 }) {
        VCard({ title: '纯文本选项' }) {
          MultiCapsuleSegmentButtonV2({
            items: this.textItems,
            selectedIndexes: this.textSelectedIndexes!!,
          })
        }

        VCard({ title: '纯图标选项(Image)' }) {
          MultiCapsuleSegmentButtonV2({
            items: this.imageItems,
            selectedIndexes: this.imageSelectedIndexes!!,
          })
        }

        VCard({ title: '纯图标选项(Symbol)' }) {
          MultiCapsuleSegmentButtonV2({
            items: this.symbolItems,
            selectedIndexes: this.symbolSelectedIndexes!!,
          })
        }

        VCard({ title: '图文混合选项' }) {
          MultiCapsuleSegmentButtonV2({
            items: this.hybridItems,
            selectedIndexes: this.hybridSelectedIndexes!!,
          })
        }

        VCard({ title: '自由选项' }) {
          MultiCapsuleSegmentButtonV2({
            items: this.freeItems,
            selectedIndexes: this.freeSelectedIndexes!!,
          })
        }
      }
      .constraintSize({ minHeight: '100%' })
      .justifyContent(FlexAlign.Start)
      .padding(16)
    }
    .backgroundColor('#f1f3f5')
    .width('100%')
    .height('100%')
  }
}

@Builder
function Noop() {
}

@Component
export struct VCard {
  @Prop
  title: ResourceStr;
  @BuilderParam
  content: () => void = Noop;

  build() {
    Column({ space: 8 }) {
      if (this.title) {
        Text(this.title)
          .maxLines(1)
          .textOverflow({ overflow: TextOverflow.Ellipsis })
          .constraintSize({ maxWidth: '80%' })
      }
      this.content()
    }
    .backgroundColor(Color.White)
    .borderRadius(8)
    .padding(8)
    .width('100%')
  }
}

MultiCapsuleSegmentButtonV2.gif

你可能感兴趣的鸿蒙文章

harmony 鸿蒙图像AI分析错误码

harmony 鸿蒙ArcButton

harmony 鸿蒙ArcSlider

harmony 鸿蒙Chip

harmony 鸿蒙ChipGroup

harmony 鸿蒙ComposeListItem

harmony 鸿蒙ComposeTitleBar

harmony 鸿蒙advanced.Counter

harmony 鸿蒙弹出框 (Dialog)

harmony 鸿蒙DialogV2

0  赞