• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# SegmentButtonV2
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @xieziang-->
5<!--Designer: @youzhi92-->
6<!--Tester: @TerryTsao-->
7<!--Adviser: @HelloCrease-->
8
9分段按钮组件用于创建页签型、单选或多选的胶囊型分段按钮。
10
11> **说明:**
12>
13> 该组件从API version 18开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
14
15## 导入模块
16
17```
18import { TabSegmentButtonV2, CapsuleSegmentButtonV2, MultiCapsuleSegmentButtonV2, SegmentButtonV2Items } from '@kit.ArkUI';
19```
20
21## 子组件
22
2324
25## 属性
26
27不支持[通用属性](ts-component-general-attributes.md)。
28
29## 事件
30
31不支持[通用事件](ts-component-general-events.md)。
32
33## TabSegmentButtonV2
34
35```ts
36TabSegmentButtonV2({
37  items: SegmentButtonV2Items,
38  selectedIndex: number,
39  $selectedIndex?: OnSelectedIndexChange,
40  onItemClicked?: Callback<number>,
41  itemMinFontScale?: number | Resource,
42  itemMaxFontScale?: number | Resource,
43  itemSpace?: LengthMetrics,
44  itemFontSize?: LengthMetrics,
45  itemSelectedFontSize?: LengthMetrics,
46  itemFontColor?: ColorMetrics,
47  itemSelectedFontColor?: ColorMetrics,
48  itemFontWeight?: FontWeight,
49  itemSelectedFontWeight?: FontWeight,
50  itemBorderRadius?: LengthMetrics,
51  itemSelectedBackgroundColor?: ColorMetrics,
52  itemIconSize?: SizeT<LengthMetrics>,
53  itemIconFillColor?: ColorMetrics,
54  itemSelectedIconFillColor?: ColorMetrics,
55  itemSymbolFontSize?: LengthMetrics,
56  itemSymbolFontColor?: ColorMetrics,
57  itemSelectedSymbolFontColor?: ColorMetrics,
58  itemMinHeight?: LengthMetrics,
59  itemPadding?: LocalizedPadding,
60  itemShadow?: ShadowOptions | ShadowStyle,
61  buttonBackgroundColor?: ColorMetrics,
62  buttonBackgroundBlurStyle?: BlurStyle,
63  buttonBackgroundBlurStyleOptions?: BackgroundBlurStyleOptions,
64  buttonBackgroundEffect?: BackgroundEffectOptions,
65  buttonBorderRadius?: LengthMetrics,
66  buttonMinHeight?: LengthMetrics,
67  buttonPadding?: LengthMetrics,
68  languageDirection?: Direction
69})
70```
71
72**装饰器类型:** @ComponentV2
73
74**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
75
76**系统能力:** SystemCapability.ArkUI.ArkUI.Full
77
78**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常,异常信息中提示接口未定义,在其他设备中可正常调用。
79
80| 名称                             | 类型                                                         | 必填 | 装饰器类型         | 说明                                                         |
81| -------------------------------- | ------------------------------------------------------------ | ---- | ------------------ | ------------------------------------------------------------ |
82| items                            | [SegmentButtonV2Items](#segmentbuttonv2items)                | 是   | @Require<br>@Param | 配置分段按钮的选项集合信息。                                 |
83| selectedIndex                    | number                                                       | 是   | @Require<br>@Param | 配置分段按钮被选中的选项下标,第一项的编号为0,之后顺序增加。 |
84| $selectedIndex                   | [OnSelectedIndexChange](#onselectedindexchange)              | 否   | @Event             | 配置分段按钮选中项变更时触发的回调函数。                     |
85| onItemClicked                    | Callback\<number>                                            | 否   | @Event             | 配置分段按钮选项被单击时触发的回调函数。                     |
86| buttonBackgroundColor            | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮背板颜色。<br>默认值:`$r('sys.color.segment_button_v2_tab_button_background')` |
87| buttonBackgroundBlurStyle        | [BlurStyle](ts-universal-attributes-background.md#blurstyle9) | 否   | @Param             | 配置分段按钮背板模糊材质。<br>默认值:undefined              |
88| buttonBackgroundBlurStyleOptions | [BackgroundBlurStyleOptions](ts-universal-attributes-background.md#backgroundblurstyleoptions10对象说明) | 否   | @Param             | 配置分段按钮背板模糊材质配置参数。<br>默认值:undefined      |
89| buttonBackgroundEffect           | [BackgroundEffectOptions](ts-universal-attributes-background.md#backgroundeffectoptions11) | 否   | @Param             | 配置分段按钮背板模糊配置参数。<br>默认值:undefined          |
90| buttonBorderRadius               | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮背板的圆角大小。<br>取值范围:[0, +∞) <br>默认值:`$r('sys.float.segment_button_v2_background_corner_radius')` |
91| buttonMinHeight                  | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮最小高度。<br>取值范围:[0, +∞) <br>默认值:只有纯文本或者纯图标选项时:`$r('sys.float.segment_button_v2_singleline_background_height')`;有图文混合的选项时:`$r('sys.float.segment_button_v2_doubleline_background_height')` |
92| buttonPadding                    | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮内边距。<br>取值范围:[0, +∞)<br>默认值:`$r('sys.float.padding_level1')` |
93| itemSelectedBackgroundColor      | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮选中的选项背景颜色。<br>默认值:`$r('sys.color.segment_button_v2_tab_selected_item_background')` |
94| itemMinHeight                    | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选项最小高度。<br>取值范围:[0, +∞)<br>默认值:<br>只有纯文本或者纯图标选项时:`$r('sys.float.segment_button_v2_singleline_selected_height')`;有图文混合的选项时:`$r('sys.float.segment_button_v2_doubleline_selected_height')` |
95| itemPadding                      | [LocalizedPadding](ts-types.md#localizedpadding12)           | 否   | @Param             | 配置分段按钮选项内边距。<br> 默认值:`{ 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')) }` |
96| itemShadow                       | [ShadowOptions](ts-universal-attributes-image-effect.md#shadowoptions对象说明) \| [ShadowStyle](ts-universal-attributes-image-effect.md#shadowstyle10枚举说明) | 否   | @Param             | 配置分段按钮选项阴影。<br>默认值:ShadowStyle.OUTER_DEFAULT_XS |
97| itemSpace                        | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选项之间的间隔。<br>取值范围:[0, +∞)<br>默认值:`LengthMetrics.vp(0)`<br>**说明:** <br>不支持设置百分比类型,异常值按默认值处理。 |
98| itemMinFontScale                 | number \| [Resource](ts-types.md#resource)                   | 否   | @Param             | 配置分段按钮选项文字大小的最小字体缩放倍数。<br>取值范围:[0, 1]<br>默认值:0<br>**说明:** <br>设置的值小于 0 时,按值为 0 处理,设置的值大于 1,按值为 1 处理,异常值默认不生效。 |
99| itemMaxFontScale                 | number \| [Resource](ts-types.md#resource)                   | 否   | @Param             | 配置分段按钮选项文字大小的最大放大倍数。<br>取值范围:[1, 2]<br>默认值:1<br>**说明:** <br>设置的值小于 1 时,按值为 1 处理,设置的值大于 2,按值为 2 处理,异常值默认不生效。 |
100| itemFontSize                     | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮非选中选项的字体大小。<br>取值范围:[0, +∞)<br>默认值:`14fp`<br>**说明:** <br>不支持设置百分比类型,异常值按默认值处理。<br>items设置textModifier的fontSize属性值时,itemFontSize不生效。 |
101| itemSelectedFontSize             | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选中项的字体大小。<br>取值范围:[0, +∞)<br>默认值:`14fp`<br>**说明:** <br>不支持设置百分比类型,异常值按默认值处理。<br/>items设置textModifier的fontSize属性值时,itemSelectedFontSize不生效。 |
102| itemFontColor                    | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮非选中选项的字体颜色。<br>默认值:`$r('sys.color.font_secondary')`<br>**说明:**<br>items设置textModifier的fontColor属性值时,itemFontColor不生效。 |
103| itemSelectedFontColor            | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮选中项的字体颜色。<br>默认值:`$r('sys.color.font_primary')`<br>**说明:**<br>items设置textModifier的fontColor属性值时,itemSelectedFontColor不生效。 |
104| itemFontWeight                   | [FontWeight](ts-appendix-enums.md#fontweight)                | 否   | @Param             | 配置分段按钮非选中选项的字体字重。<br>默认值:FontWeight.Medium<br>**说明:**<br>items设置textModifier的fontWeight属性值时,itemFontWeight不生效。 |
105| itemSelectedFontWeight           | [FontWeight](ts-appendix-enums.md#fontweight)                | 否   | @Param             | 配置分段按钮选中项的字体字重。<br>默认值:FontWeight.Medium<br>**说明:**<br>items设置textModifier的fontWeight属性值时,itemSelectedFontWeight不生效。 |
106| itemBorderRadius                 | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选项的圆角大小。<br>取值范围:[0, +∞)<br>默认值:`$r('sys.float.segment_button_v2_selected_corner_radius')` |
107| itemIconSize                     | [SizeT](../js-apis-arkui-graphics.md#sizett12)\<[LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12)> | 否   | @Param             | 配置分段按钮选项中Image类型的图标大小。<br>取值范围:[0, +∞)<br>默认值:`{ width: LengthMetrics.vp(24), height: LengthMetrics.vp(24) }`<br>**说明:**<br>items设置iconModifier的width、height属性值时,itemIconSize不生效。 |
108| itemIconFillColor                | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮非选中的选项图标颜色。<br>默认值:`$r('sys.color.font_secondary')`<br>**说明:**<br>items设置iconModifier的fillColor属性值时,itemIconFillColor不生效。 |
109| itemSelectedIconFillColor        | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮选中的选项图标颜色。<br>默认值:`$r('sys.color.font_primary')`<br>**说明:**<br/>items设置iconModifier的fillColor属性值时,itemSelectedIconFillColor不生效。 |
110| itemSymbolFontSize               | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选项中HM Symbol类型图标大小。<br>取值范围:[0, +∞)<br>默认值:`20fp`<br>**说明:**<br>不支持设置百分比类型,异常值按默认值处理。<br>items设置symbolModifier的fontSize属性值时,itemSymbolFontSize不生效。 |
111| itemSymbolFontColor              | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮非选中选项HM Symbol类型图标的颜色。<br>默认值:`$r('sys.color.font_secondary')`<br>**说明:**<br>items设置symbolModifier的fontColor属性值时,itemSymbolFontColor不生效。 |
112| itemSelectedSymbolFontColor      | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮选中选项的HM Symbol类型图标颜色。<br>默认值:`$r('sys.color.font_primary')`<br>**说明:**<br/>items设置symbolModifier的fontColor属性值时,itemSelectedSymbolFontColor不生效。 |
113| languageDirection                | [Direction](ts-appendix-enums.md#direction)                  | 否   | @Param             | 配置分段按钮的布局方向。<br>默认值:Direction.Auto           |
114
115## CapsuleSegmentButtonV2
116
117```ts
118CapsuleSegmentButtonV2({
119  items: SegmentButtonV2Items,
120  selectedIndex: number,
121  $selectedIndex?: OnSelectedIndexChange,
122  onItemClicked?: Callback<number>,
123  itemMinFontScale?: number | Resource,
124  itemMaxFontScale?: number | Resource,
125  itemSpace?: LengthMetrics,
126  itemFontSize?: LengthMetrics,
127  itemSelectedFontSize?: LengthMetrics,
128  itemFontColor?: ColorMetrics,
129  itemSelectedFontColor?: ColorMetrics,
130  itemFontWeight?: FontWeight,
131  itemSelectedFontWeight?: FontWeight,
132  itemBorderRadius?: LengthMetrics,
133  itemSelectedBackgroundColor?: ColorMetrics,
134  itemIconSize?: SizeT<LengthMetrics>,
135  itemIconFillColor?: ColorMetrics,
136  itemSelectedIconFillColor?: ColorMetrics,
137  itemSymbolFontSize?: LengthMetrics,
138  itemSymbolFontColor?: ColorMetrics,
139  itemSelectedSymbolFontColor?: ColorMetrics,
140  itemMinHeight?: LengthMetrics,
141  itemPadding?: LocalizedPadding,
142  itemShadow?: ShadowOptions | ShadowStyle,
143  buttonBackgroundColor?: ColorMetrics,
144  buttonBackgroundBlurStyle?: BlurStyle,
145  buttonBackgroundBlurStyleOptions?: BackgroundBlurStyleOptions,
146  buttonBackgroundEffect?: BackgroundEffectOptions,
147  buttonBorderRadius?: LengthMetrics,
148  buttonMinHeight?: LengthMetrics,
149  buttonPadding?: LengthMetrics,
150  languageDirection?: Direction
151})
152```
153
154**装饰器类型:** @ComponentV2
155
156**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
157
158**系统能力:** SystemCapability.ArkUI.ArkUI.Full
159
160**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常,异常信息中提示接口未定义,在其他设备中可正常调用。
161
162| 名称                             | 类型                                                         | 必填 | 装饰器类型         | 说明                                                         |
163| -------------------------------- | ------------------------------------------------------------ | ---- | ------------------ | ------------------------------------------------------------ |
164| items                            | [SegmentButtonV2Items](#segmentbuttonv2items)                | 是   | @Require<br>@Param | 配置分段按钮的选项集合信息。                                 |
165| selectedIndex                    | number                                                       | 是   | @Require<br>@Param | 配置分段按钮被选中的选项下标,第一项的编号为0,之后顺序增加。 |
166| $selectedIndex                   | [OnSelectedIndexChange](#onselectedindexchange)              | 否   | @Event             | 配置分段按钮选中项变更时的回调函数。                         |
167| onItemClicked                    | Callback\<number>                                            | 否   | @Event             | 配置分段按钮选项被单击时触发的回调函数。                     |
168| buttonBackgroundColor            | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮背板颜色。<br>默认值:`$r('sys.color.segment_button_v2_tab_button_background')` |
169| buttonBackgroundBlurStyle        | [BlurStyle](ts-universal-attributes-background.md#blurstyle9) | 否   | @Param             | 配置分段按钮背板模糊材质。<br>默认值:undefined              |
170| buttonBackgroundBlurStyleOptions | [BackgroundBlurStyleOptions](ts-universal-attributes-background.md#backgroundblurstyleoptions10对象说明) | 否   | @Param             | 配置分段按钮背板模糊材质配置参数。<br>默认值:undefined      |
171| buttonBackgroundEffect           | [BackgroundEffectOptions](ts-universal-attributes-background.md#backgroundeffectoptions11) | 否   | @Param             | 配置分段按钮背板模糊配置参数。<br>默认值:undefined          |
172| buttonBorderRadius               | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮背板的圆角大小。<br>取值范围:[0, +∞) <br>默认值:`$r('sys.float.segment_button_v2_background_corner_radius')` |
173| buttonMinHeight                  | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮最小的高度。<br>取值范围:[0, +∞) <br>默认值:只有纯文本或者纯图标选项时:`$r('sys.float.segment_button_v2_singleline_background_height')`;有图文混合的选项时:`$r('sys.float.segment_button_v2_doubleline_background_height')` |
174| buttonPadding                    | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮的内边距。<br>取值范围:[0, +∞)<br>默认值:`$r('sys.float.padding_level1')` |
175| itemSelectedBackgroundColor      | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮选中的选项背景颜色。<br>默认值:`$r('sys.color.comp_background_emphasize')` |
176| itemMinHeight                    | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选项的最小高度。<br>取值范围:[0, +∞)<br>默认值:<br>只有纯文本或者纯图标选项时:`$r('sys.float.segment_button_v2_singleline_selected_height')`;有图文混合的选项时:`$r('sys.float.segment_button_v2_doubleline_selected_height')` |
177| itemPadding                      | [LocalizedPadding](ts-types.md#localizedpadding12)           | 否   | @Param             | 配置分段按钮选项的内边距。<br>默认值:`{ 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')) }` |
178| itemShadow                       | [ShadowOptions](ts-universal-attributes-image-effect.md#shadowoptions对象说明) \| [ShadowStyle](ts-universal-attributes-image-effect.md#shadowstyle10枚举说明) | 否   | @Param             | 配置分段按钮选项的阴影。<br>默认值:ShadowStyle.OUTER_DEFAULT_XS |
179| itemSpace                        | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选项之间的间隔。<br>取值范围:[0, +∞)<br>默认值:`LengthMetrics.vp(0)`<br>**说明:** <br>不支持设置百分比类型,异常值按默认值处理。 |
180| itemMinFontScale                 | number \| [Resource](ts-types.md#resource)                   | 否   | @Param             | 配置分段按钮选项文字大小的最小字体缩放倍数。<br>取值范围:[0, 1]<br>默认值:0<br>**说明:** <br>设置的值小于 0 时,按值为 0 处理,设置的值大于 1,按值为 1 处理,异常值默认不生效。 |
181| itemMaxFontScale                 | number \| [Resource](ts-types.md#resource)                   | 否   | @Param             | 配置分段按钮选项文字大小的最大字体放大倍数。<br>取值范围:[1, 2]<br>默认值:1<br>**说明:** <br>设置的值小于 1 时,按值为 1 处理,设置的值大于 2,按值为 2 处理,异常值默认不生效。 |
182| itemFontSize                     | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮非选中的选项字体大小。<br>取值范围:[0, +∞)<br>默认值:`14fp`<br>**说明:** <br>不支持设置百分比类型,异常值按默认值处理。<br>items设置textModifier的fontSize属性值时,itemFontSize不生效。 |
183| itemSelectedFontSize             | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选中的选项字体大小。<br>取值范围:[0, +∞)<br>默认值:`14fp`<br>**说明:** <br>不支持设置百分比类型,异常值按默认值处理。<br>items设置textModifier的fontSize属性值时,itemSelectedFontSize不生效。 |
184| itemFontColor                    | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮非选中的选项字体颜色。<br>默认值:`$r('sys.color.font_secondary')`<br>**说明:**<br>items设置textModifier的fontColor属性值时,itemFontColor不生效。 |
185| itemSelectedFontColor            | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮选中的选项字体颜色。<br>默认值:`$r('sys.color.font_on_primary')`<br>**说明:**<br>items设置textModifier的fontColor属性值时,itemSelectedFontColor不生效。 |
186| itemFontWeight                   | [FontWeight](ts-appendix-enums.md#fontweight)                | 否   | @Param             | 配置分段按钮非选中的选项字体字重。<br>默认值:FontWeight.Medium<br>**说明:**<br>items设置textModifie的fontWeight属性值时,itemFontWeight不生效。 |
187| itemSelectedFontWeight           | [FontWeight](ts-appendix-enums.md#fontweight)                | 否   | @Param             | 配置分段按钮选中的选项字体字重。<br>默认值:FontWeight.Medium<br>**说明:**<br>items设置textModifier的fontWeight属性值时,itemSelectedFontWeight不生效。 |
188| itemBorderRadius                 | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选项的圆角大小。<br>取值范围:[0, +∞)<br>默认值:`$r('sys.float.segment_button_v2_selected_corner_radius')` |
189| itemIconSize                     | [SizeT](../js-apis-arkui-graphics.md#sizett12)\<[LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12)> | 否   | @Param             | 配置分段按钮选项中Image类型图标大小。<br>取值范围:[0, +∞)<br>默认值:`{ width: LengthMetrics.vp(24), height: LengthMetrics.vp(24) }`<br>**说明:**<br>items设置iconModifier的width、height属性值时,itemIconSize不生效。 |
190| itemIconFillColor                | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮非选中的选项图标颜色。<br>默认值:`$r('sys.color.font_secondary')`<br>**说明:**<br>items设置iconModifier的fillColor属性值时,itemIconFillColor不生效。 |
191| itemSelectedIconFillColor        | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮选中的选项图标颜色。<br>默认值:`$r('sys.color.font_on_primary')`<br>**说明:**<br>items设置iconModifier的fillColor属性值时,itemSelectedIconFillColor不生效。 |
192| itemSymbolFontSize               | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选项中HM Symbol类型图标大小。<br>取值范围:[0, +∞)<br>默认值:`20fp`<br>**说明:**<br>不支持设置百分比类型,异常值按默认值处理。<br>items设置symbolModifier的fontSize属性值时,itemSymbolFontSize不生效。 |
193| itemSymbolFontColor              | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮非选中的选项中HM Symbol类型图标颜色。<br>默认值:`$r('sys.color.font_secondary')`<br>**说明:**<br>items设置symbolModifier的fontColor属性值时,itemSymbolFontColor不生效。 |
194| itemSelectedSymbolFontColor      | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮选中的选项中HM Symbol类型图标颜色。<br>默认值:`$r('sys.color.font_on_primary')`<br>**说明:**<br>items设置symbolModifier的fontColor属性值时,itemSelectedSymbolFontColor不生效。 |
195| languageDirection                | [Direction](ts-appendix-enums.md#direction)                  | 否   | @Param             | 配置分段按钮的布局方向。<br>默认值:Direction.Auto           |
196
197## MultiCapsuleSegmentButtonV2
198
199```ts
200MultiCapsuleSegmentButtonV2({
201  items: SegmentButtonV2Items,
202  selectedIndexes: number[],
203  $selectedIndexes: OnSelectedIndexesChange,
204  onItemClicked?: Callback<number>,
205  itemMinFontScale?: number | Resource,
206  itemMaxFontScale?: number | Resource,
207  itemSpace?: LengthMetrics,
208  itemFontColor?: ColorMetrics,
209  itemSelectedFontColor?: ColorMetrics,
210  itemFontSize?: LengthMetrics,
211  itemSelectedFontSize?: LengthMetrics,
212  itemFontWeight?: FontWeight,
213  itemSelectedFontWeight?: FontWeight,
214  itemBorderRadius?: LengthMetrics,
215  itemBackgroundColor?: ColorMetrics,
216  itemBackgroundEffect?: BackgroundEffectOptions,
217  itemBackgroundBlurStyle?: BlurStyle,
218  itemBackgroundBlurStyleOptions?: BackgroundBlurStyleOptions,
219  itemSelectedBackgroundColor?: ColorMetrics,
220  itemIconSize?: SizeT<LengthMetrics>,
221  itemIconFillColor?: ColorMetrics,
222  itemSelectedIconFillColor?: ColorMetrics,
223  itemSymbolFontSize?: LengthMetrics,
224  itemSymbolFontColor?: ColorMetrics,
225  itemSelectedSymbolFontColor?: ColorMetrics,
226  itemMinHeight?: LengthMetrics,
227  itemPadding?: LocalizedPadding,
228  languageDirection?: Direction
229})
230```
231
232**装饰器类型:** @ComponentV2
233
234**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
235
236**系统能力:** SystemCapability.ArkUI.ArkUI.Full
237
238**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常,异常信息中提示接口未定义,在其他设备中可正常调用。
239
240| 名称                           | 类型                                                         | 必填 | 装饰器类型         | 说明                                                         |
241| ------------------------------ | ------------------------------------------------------------ | ---- | ------------------ | ------------------------------------------------------------ |
242| items                          | [SegmentButtonV2Items](#segmentbuttonv2items)                | 是   | @Require<br>@Param | 配置分段按钮的选项集合信息。                                 |
243| selectedIndexes                | number[]                                                     | 是   | @Require<br>@Param | 配置分段按钮被选中的选项下标集合,第一项的编号为0,之后顺序增加。<br>**说明:**<br>仅支持有效的按钮编号(第一个按钮编号为0,之后按顺序累加),如没有选中项可传入空数组`[]`。 |
244| $selectedIndexes               | [OnSelectedIndexesChange](#onselectedindexeschange)          | 是   | @Event             | 配置分段按钮选中项变更时的回调函数。                         |
245| onItemClicked                  | Callback\<number>                                            | 否   | @Event             | 配置分段按钮选项被单击时触发的回调函数。                     |
246| itemBackgroundColor            | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮非选中的选项背板颜色。<br>默认值:`$r('sys.color.segment_button_v2_multi_capsule_button_background')` |
247| itemBackgroundEffect           | [BackgroundEffectOptions](ts-universal-attributes-background.md#backgroundeffectoptions11) | 否   | @Param             | 配置分段按钮非选中的选项背板效果。                           |
248| itemBackgroundBlurStyle        | [BlurStyle](ts-universal-attributes-background.md#blurstyle9) | 否   | @Param             | 配置分段按钮非选中的选项背板材质。                           |
249| itemBackgroundBlurStyleOptions | [BackgroundBlurStyleOptions](ts-universal-attributes-background.md#backgroundblurstyleoptions10对象说明) | 否   | @Param             | 配置分段按钮非选中的选项背板材质配置参数。                   |
250| itemSelectedBackgroundColor    | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮选中的选项背景颜色。<br>默认值:`$r('sys.color.comp_background_emphasize')` |
251| itemMinHeight                  | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选项的最小高度。<br>取值范围:[0, +∞)<br>默认值:<br>只有纯文本或者纯图标选项时:`$r('sys.float.segment_button_v2_singleline_selected_height')`;有图文混合的选项时:`$r('sys.float.segment_button_v2_doubleline_selected_height')` |
252| itemPadding                    | [LocalizedPadding](ts-types.md#localizedpadding12)           | 否   | @Param             | 配置分段按钮选项的内边距。<br>默认值:`{ 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')) }` |
253| itemSpace                      | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选项之间的间隔。<br>取值范围:[0, +∞)<br>默认值:`LengthMetrics.vp(1)`<br>**说明:** <br>不支持设置百分比类型,异常值按默认值处理。 |
254| itemMinFontScale               | number \| [Resource](ts-types.md#resource)                   | 否   | @Param             | 配置分段按钮选项文字大小的最小缩放倍数。<br>取值范围:[0, 1]<br>默认值:0<br>**说明:** <br>设置的值小于 0 时,按值为 0 处理,设置的值大于 1,按值为 1 处理,异常值默认不生效。 |
255| itemMaxFontScale               | number \| [Resource](ts-types.md#resource)                   | 否   | @Param             | 配置分段按钮选项文字大小的最大放大倍数。<br>取值范围:[1, 2]<br>默认值:1<br>**说明:** <br>设置的值小于 1 时,按值为 1 处理,设置的值大于 2,按值为 2 处理,异常值默认不生效。 |
256| itemSelectedFontSize           | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选中的选项字体大小。<br>取值范围:[0, +∞)<br>默认值:`14fp`<br>**说明:** <br>不支持设置百分比类型,异常值按默认值处理。<br>items设置textModifier的fontSize属性值时,itemSelectedFontSize不生效。 |
257| itemFontColor                  | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮非选中的选项字体颜色。<br>默认值:`$r('sys.color.font_secondary')`<br>**说明:**<br>items设置textModifier的fontColor属性值时,itemFontColor不生效。 |
258| itemFontSize                   | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮非选中的选项字体大小。<br>取值范围:[0, +∞)<br>默认值:`14fp`<br>**说明:** <br>不支持设置百分比类型,异常值按默认值处理。<br>items设置textModifier的fontSize属性值时,itemFontSize不生效。 |
259| itemSelectedFontColor          | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮选中的选项字体颜色。<br>默认值:`$r('sys.color.font_on_primary')`<br>**说明:**<br>items设置textModifier的fontColor属性值时,itemSelectedFontColor不生效。 |
260| itemFontWeight                 | [FontWeight](ts-appendix-enums.md#fontweight)                | 否   | @Param             | 配置分段按钮非选中的选项字体字重。<br>默认值:FontWeight.Medium<br>**说明:**<br>items设置textModifier的fontWeight属性值时,itemFontWeight不生效。 |
261| itemSelectedFontWeight         | [FontWeight](ts-appendix-enums.md#fontweight)                | 否   | @Param             | 配置分段按钮选中的选项字体字重。<br>默认值:FontWeight.Medium<br>**说明:**<br>items设置textModifier的fontWeight属性值时,itemSelectedFontWeight不生效。 |
262| itemBorderRadius               | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选项的圆角大小。<br>取值范围:[0, +∞)<br>默认值:`$r('sys.float.segment_button_v2_multi_corner_radius')` |
263| itemIconSize                   | [SizeT](../js-apis-arkui-graphics.md#sizett12)\<[LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12)> | 否   | @Param             | 配置分段按钮选项中Image类型图标大小。<br>取值范围:[0, +∞)<br>默认值:`{ width: LengthMetrics.vp(24), height: LengthMetrics.vp(24) }`<br>**说明:**<br>items设置iconModifier的width、height属性值时,itemIconSize不生效。 |
264| itemIconFillColor              | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮非选中的选项图标颜色。<br>默认值:`$r('sys.color.font_secondary')`<br>**说明:**<br>items设置iconModifier的fillColor属性值时,itemIconFillColor不生效。 |
265| itemSelectedIconFillColor      | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮选中的选项图标颜色。<br>默认值:`$r('sys.color.font_on_primary')`<br>**说明:**<br>items设置iconModifier的fillColor属性值时,itemSelectedIconFillColor不生效。 |
266| itemSymbolFontSize             | [LengthMetrics](../js-apis-arkui-graphics.md#lengthmetrics12) | 否   | @Param             | 配置分段按钮选项中HM Symbol类型图标大小。<br>取值范围:[0, +∞)<br>默认值:`20fp`<br>**说明:**<br>不支持设置百分比类型,异常值按默认值处理。<br>items设置symbolModifier的fontSize属性值时,itemSymbolFontSize不生效。 |
267| itemSymbolFontColor            | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮非选中的选项中HM Symbol类型图标颜色。<br>默认值:`$r('sys.color.font_secondary')`<br>**说明:**<br>items设置symbolModifier的fontColor属性值时,itemSymbolFontColor不生效。 |
268| itemSelectedSymbolFontColor    | [ColorMetrics](../js-apis-arkui-graphics.md#colormetrics12)  | 否   | @Param             | 配置分段按钮选中的选项中HM Symbol类型图标颜色。<br>默认值:`$r('sys.color.font_on_primary')`<br>**说明:**<br>items设置symbolModifier的fontColor属性值时,itemSelectedSymbolFontColor不生效。 |
269| languageDirection              | [Direction](ts-appendix-enums.md#direction)                  | 否   | @Param             | 配置分段按钮的布局方向。<br>默认值:Direction.Auto           |
270
271## SegmentButtonV2Items
272
273分段按钮选项集合。
274
275继承自 Array\<[SegmentButtonV2Item](#segmentbuttonv2item)>
276
277**装饰器类型:** @ObservedV2
278
279**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
280
281**系统能力:** SystemCapability.ArkUI.ArkUI.Full
282
283**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常,异常信息中提示接口未定义,在其他设备中可正常调用。
284
285### constructor
286
287constructor(items: SegmentButtonV2ItemOptions[])
288
289构造函数。
290
291**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
292
293**系统能力:** SystemCapability.ArkUI.ArkUI.Full
294
295**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常,异常信息中提示接口未定义,在其他设备中可正常调用。
296
297**参数:**
298
299| 参数名  | 类型                                                              | 必填 | 说明                       |
300| ----- | ----------------------------------------------------------------- | ---- | -------------------------- |
301| items | [SegmentButtonV2ItemOptions](#segmentbuttonv2itemoptions)[] | 是   | 分段按钮选项配置参数集合。 |
302
303### hasHybrid
304
305get hasHybrid():boolean
306
307是否支持图文混合选项。
308
309**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
310
311**系统能力:** SystemCapability.ArkUI.ArkUI.Full
312
313**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常,异常信息中提示接口未定义,在其他设备中可正常调用。
314
315**返回值:**
316
317| 类型    | 说明                                                         |
318| ------- | ------------------------------------------------------------ |
319| boolean | 是否支持图文混合选项。<br>true:有图文混合选项;false:无图文混合选项。 |
320
321## SegmentButtonV2Item
322
323**装饰器类型:** @ObservedV2
324
325**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
326
327**系统能力:** SystemCapability.ArkUI.ArkUI.Full
328
329**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常,异常信息中提示接口未定义,在其他设备中可正常调用。
330
331### 属性
332
333**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
334
335**系统能力:** SystemCapability.ArkUI.ArkUI.Full
336
337**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常,异常信息中提示接口未定义,在其他设备中可正常调用。
338
339| 名称                     | 类型                                                                 | 必填 | 装饰器类型 | 说明                                            |
340| ------------------------ | -------------------------------------------------------------------- | ------ | ---- | ----------------------------------------------- |
341| text                     | [ResourceStr](ts-types.md#resourcestr)                               | 否 | @Trace   | 分段按钮选项文本。<br>默认值:undefined                              |
342| icon                     | [ResourceStr](ts-types.md#resourcestr)                               | 否 | @Trace   | 分段按钮选项图片类型图标。<br>默认值:undefined                      |
343| symbol                   | [Resource](ts-types.md#resource)                                     | 否 | @Trace   | 分段按钮选项的HM Symbol类型图标。<br>默认值:undefined            |
344| enabled                  | boolean                                                              | 是 | @Trace   | 分段按钮选项是否可用。<br>默认值:true<br>true:可用;false:不可用。                          |
345| textModifier             | [TextModifier](ts-universal-attributes-attribute-modifier.md)        | 否 | @Trace   | 分段按钮选项文本属性样式修改器。<br>默认值:undefined                |
346| iconModifier             | [ImageModifier](ts-universal-attributes-attribute-modifier.md)       | 否 | @Trace   | 分段按钮选项图片类型图标属性的样式修改器。<br>默认值:undefined       |
347| symbolModifier           | [SymbolGlyphModifier](ts-universal-attributes-attribute-modifier.md) | 否 | @Trace   | 分段按钮选项HM Symbol类型图标属性样式修改器。<br>默认值:undefined |
348| accessibilityText        | [ResourceStr](ts-types.md#resourcestr)                               | 否 | @Trace   | 分段按钮选项的无障碍文本。<br>默认值:""                       |
349| accessibilityDescription | [ResourceStr](ts-types.md#resourcestr)                               | 否 | @Trace   | 分段按钮选项的无障碍说明。<br>默认值:""                       |
350| accessibilityLevel       | string                                                               | 否 | @Trace   | 分段按钮选项的[无障碍重要性](ts-universal-attributes-accessibility.md#accessibilitylevel)。<br/>默认值:"auto"                     |
351
352> **说明**
353>
354> 1. 当配置了`symbol`和`icon` 时,`symbol`的显示优先级更高。
355> 2. 当`symbol`和`symbolModifier` 同时设置HM Symbol资源时,`symbolModifier`设置的资源具有更高的显示优先级。
356
357### constructor
358
359constructor(options: SegmentButtonV2ItemOptions)
360
361构造函数。
362
363**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
364
365**系统能力:** SystemCapability.ArkUI.ArkUI.Full
366
367**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常,异常信息中提示接口未定义,在其他设备中可正常调用。
368
369**参数:**
370
371| 参数名    | 类型                                                      | 必填 | 说明                   |
372| ------- | --------------------------------------------------------- | ---- | ---------------------- |
373| options | [SegmentButtonV2ItemOptions](#segmentbuttonv2itemoptions) | 是   | 分段按钮选项配置参数。 |
374
375### isHybrid
376
377get isHybrid():boolean
378
379检查分段按钮选项是否已配置文本和图标。
380
381**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
382
383**系统能力:** SystemCapability.ArkUI.ArkUI.Full
384
385**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常,异常信息中提示接口未定义,在其他设备中可正常调用。
386
387**返回值:**
388
389| 类型    | 说明                     |
390| ------- | ------------------------ |
391| boolean | 选项是否有图文混合配置。 |
392
393## SegmentButtonV2ItemOptions
394
395配置分段按钮选项参数。
396
397**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
398
399**系统能力:** SystemCapability.ArkUI.ArkUI.Full
400
401**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常,异常信息中提示接口未定义,在其他设备中可正常调用。
402
403### 属性
404
405| 名称                     | 类型                                                         | 必填 | 说明                                                         |
406| ------------------------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
407| text                     | [ResourceStr](ts-types.md#resourcestr)                       | 否   | 分段按钮选项文本。<br>默认值:undefined                      |
408| icon                     | [ResourceStr](ts-types.md#resourcestr)                       | 否   | 分段按钮选项图标。<br>默认值:undefined                      |
409| symbol                   | [Resource](ts-types.md#resource)                             | 否   | 分段按钮选项图标,HM Symbol类型 。<br>默认值:undefined      |
410| enabled                  | boolean                                                      | 否   | 分段按钮选项是否可用。<br>默认值:true<br>true:分段按钮选项可用;false:分段按钮选项不可用。 |
411| textModifier             | [TextModifier](ts-universal-attributes-attribute-modifier.md) | 否   | 分段按钮选项文本属性样式修改器。<br>默认值:undefined        |
412| iconModifier             | [ImageModifier](ts-universal-attributes-attribute-modifier.md) | 否   | 修改分段按钮选项图片类型的图标属性样式。<br>默认值:undefined |
413| symbolModifier           | [SymbolGlyphModifier](ts-universal-attributes-attribute-modifier.md) | 否   | 分段按钮选项HM Symbol类型图标属性样式修改器。<br>默认值:undefined |
414| accessibilityText        | [ResourceStr](ts-types.md#resourcestr)                       | 否   | 分段按钮选项无障碍文本。<br>默认值:""                       |
415| accessibilityDescription | [ResourceStr](ts-types.md#resourcestr)                       | 否   | 分段按钮选项无障碍说明。<br>默认值:""                       |
416| accessibilityLevel       | string                                                       | 否   | 分段按钮选项[无障碍重要性](ts-universal-attributes-accessibility.md#accessibilitylevel)。<br/>默认值:"auto" |
417
418> **说明**
419>
420> 1. 当配置`symbol`和`icon`时,`symbol`的显示优先级更高。
421> 2. 当`symbol`和`symbolModifier`同时设置HM Symbol资源时,`symbolModifier`设置的资源具有更高的显示优先级。
422
423## OnSelectedIndexChange
424
425type OnSelectedIndexChange = (selectedIndex: number) => void
426
427单选分段按钮选中项变更时调用的回调函数类型。
428
429**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
430
431**系统能力:** SystemCapability.ArkUI.ArkUI.Full
432
433**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常,异常信息中提示接口未定义,在其他设备中可正常调用。
434
435**参数:**
436
437| 参数名        | 类型   | 必填 | 说明               |
438| ------------- | ------ | ---- | ------------------ |
439| selectedIndex | number | 是   | 分段按钮选项下标。 |
440
441## OnSelectedIndexesChange
442
443type OnSelectedIndexesChange = (selectedIndexes: number[]) => void
444
445多选分段按钮选中项变更时调用的回调函数类型。
446
447**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
448
449**系统能力:** SystemCapability.ArkUI.ArkUI.Full
450
451**设备行为差异:** 该接口在Wearable设备上使用时,应用程序运行异常,异常信息中提示接口未定义,在其他设备中可正常调用。
452
453**参数:**
454
455| 参数名          | 类型     | 必填 | 说明                   |
456| --------------- | -------- | ---- | ---------------------- |
457| selectedIndexes | number[] | 是   | 分段按钮选项下标集合。 |
458
459## 示例
460
461### 示例 1(页签型分段按钮)
462
463此示例说明页签型分段按钮的基本用法。
464
465```ts
466import { SegmentButtonV2Items, TabSegmentButtonV2 } from '@kit.ArkUI';
467
468@Entry
469@ComponentV2
470struct TabSegmentButtonV2Example {
471  @Local textItems: SegmentButtonV2Items = new SegmentButtonV2Items([
472    { text: '手机' },
473    { text: '平板' },
474    { text: '2in1' },
475    { text: '智能穿戴' },
476  ]);
477  @Local textSelectedIndex: number = 0;
478  @Local imageItems: SegmentButtonV2Items = new SegmentButtonV2Items([
479    { icon: $r('sys.media.ohos_ic_public_device_phone') },
480    { icon: $r('sys.media.ohos_ic_public_device_pad') },
481    { icon: $r('sys.media.ohos_ic_public_device_matebook') },
482    { icon: $r('sys.media.ohos_ic_public_device_watch') },
483  ]);
484  @Local imageSelectedIndex: number = 0;
485  @Local symbolItems: SegmentButtonV2Items = new SegmentButtonV2Items([
486    { symbol: $r('sys.symbol.phone') },
487    { symbol: $r('sys.symbol.pad') },
488    { symbol: $r('sys.symbol.matebook') },
489    { symbol: $r('sys.symbol.watch') },
490  ]);
491  @Local symbolSelectedIndex: number = 0;
492  @Local hybridItems: SegmentButtonV2Items = new SegmentButtonV2Items([
493    { text: '手机', symbol: $r('sys.symbol.phone') },
494    { text: '平板', symbol: $r('sys.symbol.pad') },
495    { text: '2in1', symbol: $r('sys.symbol.matebook') },
496    { text: '智能穿戴', symbol: $r('sys.symbol.watch') },
497  ]);
498  @Local hybridSelectedIndex: number = 0;
499  @Local freeItems: SegmentButtonV2Items = new SegmentButtonV2Items([
500    { text: '年' },
501    { text: '月' },
502    { text: '周' },
503    { text: '日' },
504    { icon: $r('sys.media.ohos_ic_public_search_filled') },
505  ]);
506  @Local freeSelectedIndex: number = 0;
507
508  build() {
509    Scroll() {
510      Column({ space: 12 }) {
511        VCard({ title: '纯文本选项' }) {
512          TabSegmentButtonV2({
513            items: this.textItems,
514            selectedIndex: this.textSelectedIndex!!,
515          })
516        }
517
518        VCard({ title: '纯图标选项(Image)' }) {
519          TabSegmentButtonV2({
520            items: this.imageItems,
521            selectedIndex: this.imageSelectedIndex!!,
522          })
523        }
524
525        VCard({ title: '纯图标选项(Symbol)' }) {
526          TabSegmentButtonV2({
527            items: this.symbolItems,
528            selectedIndex: this.symbolSelectedIndex!!,
529          })
530        }
531
532        VCard({ title: '图文混合选项' }) {
533          TabSegmentButtonV2({
534            items: this.hybridItems,
535            selectedIndex: this.hybridSelectedIndex!!,
536          })
537        }
538
539        VCard({ title: '自由选项' }) {
540          TabSegmentButtonV2({
541            items: this.freeItems,
542            selectedIndex: this.freeSelectedIndex!!,
543          })
544        }
545      }
546      .constraintSize({ minHeight: '100%' })
547      .justifyContent(FlexAlign.Start)
548      .padding(16)
549    }
550    .backgroundColor('#f1f3f5')
551    .width('100%')
552    .height('100%')
553  }
554}
555
556@Builder
557function Noop() {
558}
559
560@Component
561export struct VCard {
562  @Prop
563  title: ResourceStr;
564  @BuilderParam
565  content: () => void = Noop;
566
567  build() {
568    Column({ space: 8 }) {
569      if (this.title) {
570        Text(this.title)
571          .maxLines(1)
572          .textOverflow({ overflow: TextOverflow.Ellipsis })
573          .constraintSize({ maxWidth: '80%' })
574      }
575      this.content()
576    }
577    .backgroundColor(Color.White)
578    .borderRadius(8)
579    .padding(8)
580    .width('100%')
581  }
582}
583```
584
585![TabSegmentButtonV2](figures/TabSegmentButtonV2.gif)
586
587### 示例 2(单选的胶囊型分段按钮)
588
589该示例介绍单选胶囊型分段按钮的基本用法。
590
591```ts
592import { CapsuleSegmentButtonV2, SegmentButtonV2Items } from '@kit.ArkUI';
593
594@Entry
595@ComponentV2
596struct CapsuleSegmentButtonV2Example {
597  @Local textItems: SegmentButtonV2Items = new SegmentButtonV2Items([
598    { text: '手机' },
599    { text: '平板' },
600    { text: '2in1' },
601    { text: '智能穿戴' },
602  ]);
603  @Local textSelectedIndex: number = 0;
604  @Local imageItems: SegmentButtonV2Items = new SegmentButtonV2Items([
605    { icon: $r('sys.media.ohos_ic_public_device_phone') },
606    { icon: $r('sys.media.ohos_ic_public_device_pad') },
607    { icon: $r('sys.media.ohos_ic_public_device_matebook') },
608    { icon: $r('sys.media.ohos_ic_public_device_watch') },
609  ]);
610  @Local imageSelectedIndex: number = 0;
611  @Local symbolItems: SegmentButtonV2Items = new SegmentButtonV2Items([
612    { symbol: $r('sys.symbol.phone') },
613    { symbol: $r('sys.symbol.pad') },
614    { symbol: $r('sys.symbol.matebook') },
615    { symbol: $r('sys.symbol.watch') },
616  ]);
617  @Local symbolSelectedIndex: number = 0;
618  @Local hybridItems: SegmentButtonV2Items = new SegmentButtonV2Items([
619    { text: '手机', symbol: $r('sys.symbol.phone') },
620    { text: '平板', symbol: $r('sys.symbol.pad') },
621    { text: '2in1', symbol: $r('sys.symbol.matebook') },
622    { text: '智能穿戴', symbol: $r('sys.symbol.watch') },
623  ]);
624  @Local hybridSelectedIndex: number = 0;
625  @Local freeItems: SegmentButtonV2Items = new SegmentButtonV2Items([
626    { text: '年' },
627    { text: '月' },
628    { text: '周' },
629    { text: '日' },
630    { icon: $r('sys.media.ohos_ic_public_search_filled') },
631  ]);
632  @Local freeSelectedIndex: number = 0;
633
634  build() {
635    Scroll() {
636      Column({ space: 12 }) {
637        VCard({ title: '纯文本选项' }) {
638          CapsuleSegmentButtonV2({
639            items: this.textItems,
640            selectedIndex: this.textSelectedIndex!!,
641          })
642        }
643
644        VCard({ title: '纯图标选项(Image)' }) {
645          CapsuleSegmentButtonV2({
646            items: this.imageItems,
647            selectedIndex: this.imageSelectedIndex!!,
648          })
649        }
650
651        VCard({ title: '纯图标选项(Symbol)' }) {
652          CapsuleSegmentButtonV2({
653            items: this.symbolItems,
654            selectedIndex: this.symbolSelectedIndex!!,
655          })
656        }
657
658        VCard({ title: '图文混合选项' }) {
659          CapsuleSegmentButtonV2({
660            items: this.hybridItems,
661            selectedIndex: this.hybridSelectedIndex!!,
662          })
663        }
664
665        VCard({ title: '自由选项' }) {
666          CapsuleSegmentButtonV2({
667            items: this.freeItems,
668            selectedIndex: this.freeSelectedIndex!!,
669          })
670        }
671      }
672      .constraintSize({ minHeight: '100%' })
673      .justifyContent(FlexAlign.Start)
674      .padding(16)
675    }
676    .backgroundColor('#f1f3f5')
677    .width('100%')
678    .height('100%')
679  }
680}
681
682@Builder
683function Noop() {
684}
685
686@Component
687export struct VCard {
688  @Prop
689  title: ResourceStr;
690  @BuilderParam
691  content: () => void = Noop;
692
693  build() {
694    Column({ space: 8 }) {
695      if (this.title) {
696        Text(this.title)
697          .maxLines(1)
698          .textOverflow({ overflow: TextOverflow.Ellipsis })
699          .constraintSize({ maxWidth: '80%' })
700      }
701      this.content()
702    }
703    .backgroundColor(Color.White)
704    .borderRadius(8)
705    .padding(8)
706    .width('100%')
707  }
708}
709```
710
711![CapsuleSegmentButtonV2](figures/CapsuleSegmentButtonV2.gif)
712
713### 示例 3(多选的胶囊型分段按钮)
714
715该示例介绍多选胶囊型分段按钮的基本用法。
716
717```ts
718import { MultiCapsuleSegmentButtonV2, SegmentButtonV2Items } from '@kit.ArkUI';
719
720@Entry
721@ComponentV2
722struct MultiCapsuleSegmentButtonV2Example {
723  @Local textItems: SegmentButtonV2Items = new SegmentButtonV2Items([
724    { text: '手机' },
725    { text: '平板' },
726    { text: '2in1' },
727    { text: '智能穿戴' },
728  ]);
729  @Local textSelectedIndexes: number[] = [0];
730  @Local imageItems: SegmentButtonV2Items = new SegmentButtonV2Items([
731    { icon: $r('sys.media.ohos_ic_public_device_phone') },
732    { icon: $r('sys.media.ohos_ic_public_device_pad') },
733    { icon: $r('sys.media.ohos_ic_public_device_matebook') },
734    { icon: $r('sys.media.ohos_ic_public_device_watch') },
735  ]);
736  @Local imageSelectedIndexes: number[] = [0];
737  @Local symbolItems: SegmentButtonV2Items = new SegmentButtonV2Items([
738    { symbol: $r('sys.symbol.phone') },
739    { symbol: $r('sys.symbol.pad') },
740    { symbol: $r('sys.symbol.matebook') },
741    { symbol: $r('sys.symbol.watch') },
742  ]);
743  @Local symbolSelectedIndexes: number[] = [0];
744  @Local hybridItems: SegmentButtonV2Items = new SegmentButtonV2Items([
745    { text: '手机', symbol: $r('sys.symbol.phone') },
746    { text: '平板', symbol: $r('sys.symbol.pad') },
747    { text: '2in1', symbol: $r('sys.symbol.matebook') },
748    { text: '智能穿戴', symbol: $r('sys.symbol.watch') },
749  ]);
750  @Local hybridSelectedIndexes: number[] = [0];
751  @Local freeItems: SegmentButtonV2Items = new SegmentButtonV2Items([
752    { text: '年' },
753    { text: '月' },
754    { text: '周' },
755    { text: '日' },
756    { icon: $r('sys.media.ohos_ic_public_search_filled') },
757  ]);
758  @Local freeSelectedIndexes: number[] = [0];
759
760  build() {
761    Scroll() {
762      Column({ space: 12 }) {
763        VCard({ title: '纯文本选项' }) {
764          MultiCapsuleSegmentButtonV2({
765            items: this.textItems,
766            selectedIndexes: this.textSelectedIndexes!!,
767          })
768        }
769
770        VCard({ title: '纯图标选项(Image)' }) {
771          MultiCapsuleSegmentButtonV2({
772            items: this.imageItems,
773            selectedIndexes: this.imageSelectedIndexes!!,
774          })
775        }
776
777        VCard({ title: '纯图标选项(Symbol)' }) {
778          MultiCapsuleSegmentButtonV2({
779            items: this.symbolItems,
780            selectedIndexes: this.symbolSelectedIndexes!!,
781          })
782        }
783
784        VCard({ title: '图文混合选项' }) {
785          MultiCapsuleSegmentButtonV2({
786            items: this.hybridItems,
787            selectedIndexes: this.hybridSelectedIndexes!!,
788          })
789        }
790
791        VCard({ title: '自由选项' }) {
792          MultiCapsuleSegmentButtonV2({
793            items: this.freeItems,
794            selectedIndexes: this.freeSelectedIndexes!!,
795          })
796        }
797      }
798      .constraintSize({ minHeight: '100%' })
799      .justifyContent(FlexAlign.Start)
800      .padding(16)
801    }
802    .backgroundColor('#f1f3f5')
803    .width('100%')
804    .height('100%')
805  }
806}
807
808@Builder
809function Noop() {
810}
811
812@Component
813export struct VCard {
814  @Prop
815  title: ResourceStr;
816  @BuilderParam
817  content: () => void = Noop;
818
819  build() {
820    Column({ space: 8 }) {
821      if (this.title) {
822        Text(this.title)
823          .maxLines(1)
824          .textOverflow({ overflow: TextOverflow.Ellipsis })
825          .constraintSize({ maxWidth: '80%' })
826      }
827      this.content()
828    }
829    .backgroundColor(Color.White)
830    .borderRadius(8)
831    .padding(8)
832    .width('100%')
833  }
834}
835```
836
837![MultiCapsuleSegmentButtonV2.gif](figures/MultiCapsuleSegmentButtonV2.gif)
838
839### 示例四(分段按钮Modifier的基本用法)
840
841 该示例介绍页签型分段按钮,单选的胶囊型分段按钮,多选的胶囊型分段按钮Modifier的基本用法。
842
843```ts
844import {
845  SegmentButtonV2Items,
846  TabSegmentButtonV2,
847  CapsuleSegmentButtonV2,
848  MultiCapsuleSegmentButtonV2,
849  TextModifier,
850  ImageModifier,
851  SymbolGlyphModifier
852} from '@kit.ArkUI';
853
854@Entry
855@ComponentV2
856struct SegmentButtonV2Example {
857  @Local textItems: SegmentButtonV2Items = new SegmentButtonV2Items([
858    { text: '手机', textModifier: new TextModifier().fontSize(20) },
859    { text: '平板' },
860    { icon: $r('sys.media.ohos_ic_public_device_phone'), iconModifier: new ImageModifier().height(17).width(17) },
861    { icon: $r('sys.media.ohos_ic_public_device_pad') },
862    { symbol: $r('sys.symbol.phone'), symbolModifier: new SymbolGlyphModifier().fontColor([Color.Pink]) },
863    { symbolModifier: new SymbolGlyphModifier($r('sys.symbol.pad')).fontColor([Color.Orange]) },
864    { symbol: $r('sys.symbol.matebook') },
865  ]);
866  @Local textSelectedIndex: number = 0;
867  @Local freeSelectedIndex: number[] = [0];
868
869  build() {
870    Column() {
871      VCard({ title: 'TabSegmentButtonV2' }) {
872        TabSegmentButtonV2({
873          items: this.textItems,
874          selectedIndex: this.textSelectedIndex!!,
875        })
876      }
877
878      VCard({ title: 'CapsuleSegmentButtonV2' }) {
879        CapsuleSegmentButtonV2({
880          items: this.textItems,
881          selectedIndex: this.textSelectedIndex!!,
882        })
883      }
884
885      VCard({ title: 'MultiCapsuleSegmentButtonV2' }) {
886        MultiCapsuleSegmentButtonV2({
887          items: this.textItems,
888          selectedIndexes: this.freeSelectedIndex!!,
889        })
890      }
891
892    }
893    .constraintSize({ minHeight: '100%' })
894    .justifyContent(FlexAlign.Start)
895    .padding(16)
896
897  }
898}
899
900@Builder
901function Noop() {
902}
903
904@Component
905export struct VCard {
906  @Prop
907  title: ResourceStr;
908  @BuilderParam
909  content: () => void = Noop;
910
911  build() {
912    Column({ space: 8 }) {
913      if (this.title) {
914        Text(this.title)
915          .maxLines(1)
916          .textOverflow({ overflow: TextOverflow.Ellipsis })
917          .constraintSize({ maxWidth: '80%' })
918      }
919      this.content()
920    }
921    .backgroundColor(Color.White)
922    .borderRadius(8)
923    .padding(8)
924    .width('100%')
925  }
926}
927```
928
929![TabSegmentButtonV2OrCapsuleSegmentButtonV2OrMultiCapsuleSegmentButtonV2](figures/TabSegmentButtonV2OrCapsuleSegmentButtonV2OrMultiCapsuleSegmentButtonV2.png)