• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# ChipGroup
2
3ChipGroup高级组件,提供操作块群组,用于对文件或者资源内容进行分类等场景。
4
5> **说明:**
6>
7> 该组件从API Version 12开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8>
9> 该组件不支持在Wearable设备上使用。
10
11## 导入模块
12
13```typescript
14import { ChipSize, ChipGroup } from '@kit.ArkUI'
15```
16
17## 子组件
18
1920
21## ChipGroup
22
23```
24ChipGroup({
25  items: ChipGroupItemOptions[],
26  itemStyle?: ChipItemStyle,
27  selectedIndexes?: Array<number>,
28  multiple?: boolean,
29  chipGroupSpace?: ChipGroupSpaceOptions,
30  chipGroupPadding?: ChipGroupPaddingOptions,
31  onChange?: (selectedIndexes: Array<number>) => void,
32  suffix?: Callback<void>
33})
34```
35
36**装饰器类型:**@Component
37
38**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
39
40**系统能力:** SystemCapability.ArkUI.ArkUI.Full
41
42| 名称            | 类型                                            | 必填 | 装饰器类型 | 说明                                                                                     |
43| --------------- | ----------------------------------------------- | ---- | ------------------------------------------------------------                             | ------------------------------------------------------------                             |
44| items           | [ChipGroupItemOptions[]](#chipgroupitemoptions) | 是   | @Require &nbsp;@Prop | 每个chip特定的属性,参考[ChipGroupItemOptions[]](#chipgroupitemoptions)类型。<br/>为undefined时,ChipGroup默认为空。               |
45| itemStyle       | [ChipItemStyle](#chipitemstyle)                 | 否   | @Prop | chip的style属性,比如颜色,大小等,参考[ChipItemStyle](#chipitemstyle)类型。<br/>为undefined时,ChipGroup中的Chip式样为默认值。                 |
46| selectedIndexes | Array&lt;number&gt;                             | 否   | @Prop | 被选中chip的索引。<br/>为undefined时,默认第一个Chip被选中。                                            |
47| multiple        | boolean                                         | 否   | @Prop | true:支持多个chip被选中;false:只能是单个chip被选中。<br/>默认值:false<br/>为undefined时,multiple走默认值。                     |
48| chipGroupSpace  | [ChipGroupSpaceOptions](#chipgroupspaceoptions) | 否   | @Prop | 左右内边距,和chip与chip之间的间距。参考[ChipGroupSpaceOptions](#chipgroupspaceoptions)类型。<br/>为undefined时,chipGroupSpace走默认值。 |
49| chipGroupPadding  | [ChipGroupPaddingOptions](#chipgrouppaddingoptions) | 否   | @Prop | chipGroup的上下内边距,以便控制整体高度。参考[ChipGroupPaddingOptions](#chipgrouppaddingoptions)类型。<br/>为undefined时,chipGroupPadding走默认值。 |
50| onChange        | Callback\<Array\<number>>  | 否   | -  | chip状态改变时候的回调方法。<br/>为undefined时,表示解绑事件。                                                                |
51| suffix          | ()=>void                                        | 否   | @BuilderParam | 最右侧的builder,由使用者自定义,使用时候需引入[IconGroupSuffix](#icongroupsuffix)接口。<br/>默认值:不传入的情况,没有suffix。 |
52
53> **说明:**
54>
55> 1. 针对selectedIndexes和multiple接口,multiple等于false的时候,当没有传入selectedIndexes时候,默认是第一个chip被选中,当传入的selectedIndexes有一个以上的元素时候,默认第一个索引的chip被选中。
56>
57> 2. 针对suffix接口,使用时候需要引入IconGroupSuffix接口,不传入的情况,没有suffix。
58>
59> 3. 关于图标填充色(fillColor以及activedFillColor)的设置,跟随字体颜色(fontColor)保持一致。若想两者颜色不同,则需要在传入[ChipGroupSpaceOptions](#chipgroupspaceoptions)时,使用prefixSymbol。
60
61## ChipGroupItemOptions
62
63ChipGroupItemOptions定义每个chip的非共通属性。
64
65**系统能力:** SystemCapability.ArkUI.ArkUI.Full
66
67| 名称         | 类型                           | 必填 | 说明                              |
68| ----------   | ----------------------------- | ---- | ----------------------------------- |
69| prefixIcon   | [IconOptions](#iconoptions)   | 否   | 前缀Image图标属性。<br> **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                   |
70| prefixSymbol | [ChipSymbolGlyphOptions](ohos-arkui-advanced-Chip.md#chipsymbolglyphoptions12) | 否   | 前缀SymbolGlyph图标属性。<br> **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。             |
71| label        | [LabelOptions](#labeloptions) | 是   | 文本属性。<br> **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                            |
72| suffixIcon<sup>(deprecated)</sup>   | [IconOptions](#iconoptions) | 否   | 后缀Image图标属性。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。**说明:** 从API version 12开始支持,从API version 14开始废弃,建议使用suffixImageIcon替代。|
73| suffixSymbol | [ChipSymbolGlyphOptions](ohos-arkui-advanced-Chip.md#chipsymbolglyphoptions12) | 否   | 后缀SymbolGlyph图标属性。<br> **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。             |
74| allowClose   | boolean                       | 否   | 删除图标是否显示。<br/>默认值:false。<br> **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。  |
75| suffixImageIcon<sup>14+</sup> | [SuffixImageIconOptions](#suffiximageiconoptions14) | 否 | 后缀Image图标属性。<br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 |
76| suffixSymbolOptions<sup>14+</sup> | [ChipSuffixSymbolGlyphOptions](ohos-arkui-advanced-Chip.md#chipsuffixsymbolglyphoptions14) | 否 | 后缀Symbol图标属性。<br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。|
77| closeOptions<sup>14+</sup> | [CloseOptions](ohos-arkui-advanced-Chip.md#closeoptions14) | 否 | 默认删除图标的无障碍朗读功能属性。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。|
78| accessibilityDescription<sup>14+</sup> | [ResourceStr](ts-types.md#resourcestr) | 否 | ChipGroup中Chip项的无障碍描述。此描述用于向用户详细解释ChipGroup中Chip项,开发人员应为ChipGroup中Chip项的这一属性提供较为详尽的文本说明,以协助用户理解即将执行的操作及其可能产生的后果。特别是当这些后果无法仅从ChipGroup中Chip项的属性和无障碍文本中直接获知时。如果ChipGroup中Chip项同时具备文本属性和无障碍说明属性,当ChipGroup中Chip项被选中时,系统将首先播报ChipGroup中Chip项的文本属性,随后播报无障碍说明属性的内容。<br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。|
79| accessibilityLevel<sup>14+</sup> | string | 否 | ChipGroup中Chip项无障碍重要性。用于控制ChipGroup中Chip项是否可被无障碍辅助服务所识别。<br>支持的值为:<br>"auto":ChipGroup中Chip项会转换为“yes”。<br>"yes":ChipGroup中Chip项可被无障碍辅助服务所识别。<br>"no":ChipGroup中Chip项不可被无障碍辅助服务所识别。<br>"no-hide-descendants":ChipGroup中Chip项及其所有子组件不可被无障碍辅助服务所识别。<br>默认值:"auto"。<br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。|
80
81
82>**说明:**
83>
84>suffixIcon有传入参数时,allowClose不生效,suffixIcon没有传入参数时,allowClose决定是否显示删除图标。
85
86## ChipItemStyle
87
88ChipItemStyle定义了chip的共通属性。
89
90**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
91
92**系统能力:** SystemCapability.ArkUI.ArkUI.Full
93
94| 名称                    | 类型                                                         | 必填 | 说明                                                         |
95| ----------------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
96| size                    | [ChipSize](ohos-arkui-advanced-Chip.md#chipsize) \| [SizeOptions](ts-types.md#sizeoptions) | 否   | chip尺寸,使用时需要从chip组件引入ChipSize类型。<br/>默认值:ChipSize:ChipSize.NORMAL。<br/> 为undefined时,ChipSize走默认值。 |
97| backgroundColor         | [ResourceColor](ts-types.md#resourcecolor)                   | 否   | chip背景颜色。<br/>默认值:$r('sys.color.ohos_id_color_button_normal')。<br/>为undefined时,backgroundColor走默认值。 |
98| fontColor               | [ResourceColor](ts-types.md#resourcecolor)                   | 否   | chip文字颜色。<br/>默认值:$r('sys.color.ohos_id_color_text_primary')。<br/>为undefined时,fontColor走默认值。 |
99| selectedFontColor       | [ResourceColor](ts-types.md#resourcecolor)                   | 否   | chip激活时的文字颜色。<br/>默认值:$r('sys.color.ohos_id_color_text_primary_contrary')。<br/>为undefined时,selectedFontColor走默认值。 |
100| selectedBackgroundColor | [ResourceColor](ts-types.md#resourcecolor)                   | 否   | chip激活时的背景颜色。<br/>默认值:$r('sys.color.ohos_id_color_emphasize')。<br/>为undefined时,selectedBackgroundColor走默认值。 |
101
102> **说明:**
103>
104> 1.操作块的大小可以是两种类型,一种是ChipSize,为方便使用,有两种尺寸可选分别是NORMAL和SMALL;另一种是SizeOptions。
105>
106> 2.backgroundColor、selectedBackgroundColor赋值undefined时,显示默认背景颜色,赋值非法值时,背景色透明。
107
108## ChipGroupSpaceOptions
109
110ChipGroupSpaceOptions 定义了chipGroup左右内边距,以及chip与chip直接的间距。
111
112**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
113
114**系统能力:** SystemCapability.ArkUI.ArkUI.Full
115
116| 名称       | 类型            | 必填 | 说明                                             |
117| ---------- | -------------- | ---- | ------------------------------------------------ |
118| itemSpace | string \| number  | 否   | chip与chip之间的间距(不支持百分比)。<br/>默认值:8<br/>单位:vp<br/>为undefined时,itemSpace走默认值。      |
119| startSpace | [Length](ts-types.md#length)         | 否   | 左侧内边距(不支持百分比)。<br/>默认值:16<br/>单位:vp<br/>为undefined时,startSpace走默认值。                |
120| endSpace   | [Length](ts-types.md#length)         | 否   | 右侧内边距(不支持百分比)。<br/>默认值:16<br/>单位:vp<br/>为undefined时,endSpace走默认值。 |
121
122## ChipGroupPaddingOptions
123
124ChipGroupPaddingOptions 定义了chipGroup上下内边距,以便控制chipGroup的整体高度。
125
126**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
127
128**系统能力:** SystemCapability.ArkUI.ArkUI.Full
129
130| 名称   | 类型            | 必填 | 说明                                                      |
131| ------ | -------------- | ---- | ------------------------------------------------            |
132| top    | [Length](ts-types.md#length)         | 是   | chipGroup的上方内边距(不支持百分比)。<br/>默认值:14<br/>为undefined时,top走默认值。        |
133| bottom | [Length](ts-types.md#length)         | 是   | chipGroup的上方内边距(不支持百分比)。<br/>默认值:14<br/>为undefined时,bottom走默认值。         |
134
135## SuffixImageIconOptions<sup>14+</sup>
136
137后缀图标选项类型。
138
139继承于[IconOptions](#iconoptions)。
140
141**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
142
143**系统能力:** SystemCapability.ArkUI.ArkUI.Full
144
145| 名称 | 类型 | 必填 | 说明 |
146| ---- | ---- | --- | ---- |
147| action | [VoidCallback](ts-types.md#voidcallback12) | 否 | 后缀图标响应事件。|
148| accessibilityText | [ResourceStr](ts-types.md#resourcestr) | 否 | 后缀图标无障碍文本属性。用于为用户进一步说明后缀图标,开发人员可为后缀图标的该属性设置相对较详细的解释文本,帮助用户理解将要执行的操作。如帮助用户理解将要执行的操作可能导致什么后果,尤其是当这些后果无法从后缀图标本身属性与无障碍文本中了解到时。若后缀图标既拥有文本属性又拥有无障碍说明属性,则后缀图标被选中时,先播报后缀图标的文本属性,再播报无障碍说明属性的内容。|
149| accessibilityDescription | [ResourceStr](ts-types.md#resourcestr) | 否 | 后缀图标的无障碍描述。此描述用于向用户详细解释后缀图标,开发人员应为后缀图标的这一属性提供较为详尽的文本说明,以协助用户理解即将执行的操作及其可能产生的后果。特别是当这些后果无法仅从后缀图标的属性和无障碍文本中直接获知时。如果后缀图标同时具备文本属性和无障碍说明属性,当后缀图标被选中时,系统将首先播报后缀图标的文本属性,随后播报无障碍说明属性的内容。|
150| accessibilityLevel | string | 否 | 后缀图标无障碍重要性。用于控制后缀图标是否可被无障碍辅助服务所识别。<br>支持的值为:<br>"auto":后缀图标存在action时转化为“yes”,不存在action时,转化为“no”。<br>"yes":后缀图标可被无障碍辅助服务所识别。<br>"no":后缀图标不可被无障碍辅助服务所识别。<br>"no-hide-descendants":后缀图标及其所有子组件不可被无障碍辅助服务所识别。<br>默认值:"auto"。|
151
152## SymbolItemOptions<sup>14+</sup>
153
154ChipGroup尾部图标选项类型。
155
156**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
157
158**系统能力:** SystemCapability.ArkUI.ArkUI.Full
159
160| 名称 | 类型 | 必填 | 说明 |
161| ---- | ---- | --- | ---- |
162| symbol | [SymbolGlyphModifier](ts-universal-attributes-attribute-modifier.md) | 是 | 尾部图标属性。|
163| action | [VoidCallback](ts-types.md#voidcallback12) | 是 | 尾部图标响应事件。|
164| accessibilityText | [ResourceStr](ts-types.md#resourcestr) | 否 | 尾部图标无障碍文本属性。用于为用户进一步说明尾部图标,开发人员可为尾部图标的该属性设置相对较详细的解释文本,帮助用户理解将要执行的操作。如帮助用户理解将要执行的操作可能导致什么后果,尤其是当这些后果无法从尾部图标本身属性与无障碍文本中了解到时。若尾部图标既拥有文本属性又拥有无障碍说明属性,则尾部图标被选中时,先播报尾部图标的文本属性,再播报无障碍说明属性的内容。|
165| accessibilityDescription | [ResourceStr](ts-types.md#resourcestr) | 否 | 尾部图标的无障碍描述。此描述用于向用户详细解释尾部图标,开发人员应为尾部图标的这一属性提供较为详尽的文本说明,以协助用户理解即将执行的操作及其可能产生的后果。特别是当这些后果无法仅从尾部图标的属性和无障碍文本中直接获知时。如果尾部图标同时具备文本属性和无障碍说明属性,当尾部图标被选中时,系统将首先播报尾部图标的文本属性,随后播报无障碍说明属性的内容。|
166| accessibilityLevel | string | 否 | 尾部图标无障碍重要性。用于控制尾部图标是否可被无障碍辅助服务所识别。<br>支持的值为:<br>"auto":尾部图标转化为“yes”。<br>"yes":尾部图标可被无障碍辅助服务所识别。<br>"no":尾部图标不可被无障碍辅助服务所识别。<br>"no-hide-descendants":尾部图标及其所有子组件不可被无障碍辅助服务所识别。<br>默认值:"auto"。|
167
168## IconGroupSuffix
169
170**装饰器类型:**@Component
171
172**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
173
174**系统能力:** SystemCapability.ArkUI.ArkUI.Full
175
176| 名称     | 类型                    | 必填 | 装饰器类型 | 说明                                                              |
177| -------- | ---------------------- | ---- | ----------------------------------------------| ----------------------------------------------|
178| items    | Array<[IconItemOptions](#iconitemoptions) \| [SymbolGlyphModifier](ts-universal-attributes-attribute-modifier.md) \| [ SymbolItemOptions](#symbolitemoptions14)> | 是   | @Require &nbsp;@Prop | 自定义builder items。|
179
180> **说明:**
181>
182> 传参SymbolGlyphModifier时,不支持通过symbolEffect修改动效类型和effectStrategy设置动效。
183>
184
185## IconItemOptions
186
187尾部builder接口定义,针对背板大小及颜色设置限制。
188
189**系统能力:** SystemCapability.ArkUI.ArkUI.Full
190
191| 名称     | 类型                            | 必填 | 说明                                    |
192| -------- | --------------                 | ---- | ------------------------------           |
193| icon     | [IconOptions](#iconoptions)    | 是   | 自定义Builder icon。<br/>chip大小是ChipSize.SMALL时,suffix默认值:{width: 16,height: 16}。<br/>chip大小是ChipSize.NORMAL时,suffix默认值:{width: 24,height: 24}。</br> 如果想动态修改size,那么必须在引入[IconGroupSuffix](#icongroupsuffix)时,使用[SymbolGlyphModifier](ts-universal-attributes-attribute-modifier.md)类型。<br> **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                       |
194| action   | Callback\<void>        | 是   | 自定义Builder items 的Callback<br/>为undefined时,表示解绑事件。<br> **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。            |
195| accessibilityText<sup>14+</sup> | [ResourceStr](ts-types.md#resourcestr) | 否 | 尾部图标无障碍文本属性。用于为用户进一步说明尾部图标,开发人员可为尾部图标的该属性设置相对较详细的解释文本,帮助用户理解将要执行的操作。如帮助用户理解将要执行的操作可能导致什么后果,尤其是当这些后果无法从尾部图标本身属性与无障碍文本中了解到时。若尾部图标既拥有文本属性又拥有无障碍说明属性,则尾部图标被选中时,先播报尾部图标的文本属性,再播报无障碍说明属性的内容。<br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。|
196| accessibilityDescription<sup>14+</sup> | [ResourceStr](ts-types.md#resourcestr) | 否 | 尾部图标无障碍描述。此描述用于向用户详细解释尾部图标,开发人员应为尾部图标的这一属性提供较为详尽的文本说明,以协助用户理解即将执行的操作及其可能产生的后果。特别是当这些后果无法仅从尾部图标的属性和无障碍文本中直接获知时。如果尾部图标同时具备文本属性和无障碍说明属性,当尾部图标被选中时,系统将首先播报尾部图标的文本属性,随后播报无障碍说明属性的内容。<br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。|
197| accessibilityLevel<sup>14+</sup> | string | 否 | 尾部图标无障碍重要性。用于控制尾部图标是否可被无障碍辅助服务所识别。<br>支持的值为:<br>"auto":尾部图标转化为“yes”。<br>"yes":尾部图标可被无障碍辅助服务所识别。<br>"no":尾部图标不可被无障碍辅助服务所识别。<br>"no-hide-descendants":尾部图标及其所有子组件不可被无障碍辅助服务所识别。<br>默认值:"auto"。<br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。|
198
199## IconOptions
200
201IconOptions定义图标的共通属性。
202
203**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
204
205**系统能力:** SystemCapability.ArkUI.ArkUI.Full
206
207| 名称 | 类型                                   | 必填 | 说明                                                         |
208| ---- | -------------------------------------- | ---- | ------------------------------------------------------------ |
209| src  | [ResourceStr](ts-types.md#resourcestr) | 是   | 图标图片或图片地址引用。                                     |
210| size | [SizeOptions](ts-types.md#sizeoptions) | 否   | 图标大小,不支持百分比。|
211
212## LabelOptions
213
214Label定义图标的共通属性。
215
216**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
217
218**系统能力:** SystemCapability.ArkUI.ArkUI.Full
219
220| 名称 | 类型   | 必填  | 说明     |
221| ---- | ------ | ---- | -------- |
222| text | string | 是   | 文本属性  |
223
224## 示例
225
226### 示例1(无最右侧的builder)
227
228该示例实现了无最右侧的builder时效果。
229
230```typescript
231import { ChipSize, ChipGroup } from '@kit.ArkUI'
232
233@Entry
234@Preview
235@Component
236struct Index {
237  @State selected_index: Array<number> = [0, 1, 2, 3, 4, 5, 6]
238  build() {
239    Column() {
240      ChipGroup({
241        items: [
242          {
243            // 此处 'app.media.icon' 仅作示例,请替换为实际使用图片。
244            prefixIcon: { src: $r('app.media.icon') },
245            label: { text: "操作块1" },
246            suffixIcon: { src: $r('sys.media.ohos_ic_public_cut') },
247            allowClose: false
248          },
249          {
250            prefixIcon: { src: $r('sys.media.ohos_ic_public_copy') },
251            label: { text: "操作块2" },
252            allowClose: true
253          },
254          {
255            prefixIcon: { src: $r('sys.media.ohos_ic_public_clock') },
256            label: { text: "操作块3" },
257            allowClose: true
258          },
259          {
260            prefixIcon: { src: $r('sys.media.ohos_ic_public_cast_stream') },
261            label: { text: "操作块4" },
262            allowClose: true
263          },
264          {
265            prefixIcon: { src: $r('sys.media.ohos_ic_public_cast_mirror') },
266            label: { text: "操作块5" },
267            allowClose: true
268          },
269          {
270            prefixIcon: { src: $r('sys.media.ohos_ic_public_cast_stream') },
271            label: { text: "操作块6" },
272            allowClose: true
273          },
274        ],
275        itemStyle: {
276          size: ChipSize.SMALL,
277          backgroundColor: $r('sys.color.ohos_id_color_button_normal'),
278          fontColor: $r('sys.color.ohos_id_color_text_primary'),
279          selectedBackgroundColor: $r('sys.color.ohos_id_color_emphasize'),
280          selectedFontColor: $r('sys.color.ohos_id_color_text_primary_contrary'),
281        },
282        selectedIndexes: this.selected_index,
283        multiple: false,
284        chipGroupSpace: { itemSpace: 8, endSpace: 0 },
285        chipGroupPadding: { top: 10, bottom: 10 },
286        onChange: (activatedChipsIndex:Array<number>) => {
287          console.log('chips on clicked, activated index ' + activatedChipsIndex)
288        },
289      })
290    }
291  }
292}
293```
294
295![](figures/chipGroupDemo1.jpeg)
296
297### 示例2(有最右侧的builder)
298
299该示例通过配置suffix实现最右侧的自定义组件效果。
300
301```typescript
302import { ChipSize, ChipGroup, IconGroupSuffix  } from '@kit.ArkUI'
303
304@Entry
305@Preview
306@Component
307struct Index {
308  @State selected_index: Array<number> = [0, 1, 2, 3, 4, 5, 6]
309  @State selected_state: boolean = true;
310
311  @LocalBuilder
312  ChipGroupSuffix(): void {
313    IconGroupSuffix({
314      items: [{
315        icon: { src: $r('sys.media.ohos_ic_public_search_filled'), size: { width: 36, height: 36 } },
316        action: () => {
317          if (this.selected_state == false) {
318            this.selected_index = [0, 1, 2, 3, 4, 5, 6]
319            this.selected_state = true
320          } else {
321            this.selected_index = []
322            this.selected_state = false
323          }
324        }
325      }
326      ]
327    })
328  }
329
330  build() {
331    Column() {
332      ChipGroup({
333        items: [
334          {
335            prefixIcon: { src: $r('app.media.icon') },
336            label: { text: "操作块1" },
337            suffixIcon: { src: $r('sys.media.ohos_ic_public_cut') },
338            allowClose: false
339          },
340          {
341            prefixIcon: { src: $r('sys.media.ohos_ic_public_copy') },
342            label: { text: "操作块2" },
343            allowClose: true
344          },
345          {
346            prefixIcon: { src: $r('sys.media.ohos_ic_public_clock') },
347            label: { text: "操作块3" },
348            allowClose: true
349          },
350          {
351            prefixIcon: { src: $r('sys.media.ohos_ic_public_cast_stream') },
352            label: { text: "操作块4" },
353            allowClose: true
354          },
355          {
356            prefixIcon: { src: $r('sys.media.ohos_ic_public_cast_mirror') },
357            label: { text: "操作块5" },
358            allowClose: true
359          },
360          {
361            prefixIcon: { src: $r('sys.media.ohos_ic_public_cast_stream') },
362            label: { text: "操作块6" },
363            allowClose: true
364          },
365        ],
366        itemStyle: {
367          size: ChipSize.NORMAL,
368          backgroundColor: $r('sys.color.ohos_id_color_button_normal'),
369          fontColor: $r('sys.color.ohos_id_color_text_primary'),
370          selectedBackgroundColor: $r('sys.color.ohos_id_color_emphasize'),
371          selectedFontColor: $r('sys.color.ohos_id_color_text_primary_contrary'),
372        },
373        selectedIndexes: this.selected_index,
374        multiple: true,
375        chipGroupSpace: { itemSpace: 8, endSpace: 0 },
376        chipGroupPadding: { top: 10, bottom: 10 },
377        onChange: (activatedChipsIndex: Array<number>) => {
378          console.log('chips on clicked, activated index ' + activatedChipsIndex)
379        },
380        suffix: this.ChipGroupSuffix
381      })
382    }
383  }
384}
385```
386
387![](figures/chipGroupDemo2.jpeg)
388
389### 示例3(设置Symbol类型图标)
390该示例实现了IconGroupSuffix及ChipGroup传入SymbolGlyph资源。
391```typescript
392import { ChipSize, ChipGroup, IconGroupSuffix, SymbolGlyphModifier } from '@kit.ArkUI'
393
394@Entry
395@Preview
396@Component
397struct Index {
398  @State selected_index: Array<number> = [0, 1, 2, 3, 4, 5, 6];
399  @State selected_state: boolean = true;
400  @State prefixModifierNormal: SymbolGlyphModifier = new SymbolGlyphModifier($r('sys.symbol.ohos_star'));
401  @State prefixModifierActivated: SymbolGlyphModifier = new SymbolGlyphModifier($r('sys.symbol.ohos_star')).fontColor([Color.Red]);
402  @State suffixModifierNormal: SymbolGlyphModifier = new SymbolGlyphModifier($r('sys.symbol.ohos_wifi'));
403  @State suffixModifierActivated: SymbolGlyphModifier = new SymbolGlyphModifier($r('sys.symbol.ohos_wifi')).fontColor([Color.Red]);
404
405  @LocalBuilder
406  ChipGroupSuffix(): void {
407    IconGroupSuffix({
408      items: [
409        new SymbolGlyphModifier($r('sys.symbol.magnifyingglass'))
410          .onClick(() => {
411            if (this.selected_state == false) {
412              this.selected_index = [0, 1, 2, 3, 4, 5, 6];
413              this.selected_state = true;
414            } else {
415              this.selected_index = [];
416              this.selected_state = false;
417            }
418          })
419      ]
420    })
421  }
422
423  build() {
424    Column() {
425      ChipGroup({
426        items: [
427          {
428            prefixSymbol: { normal: this.prefixModifierNormal, activated: this.prefixModifierActivated },
429            label: { text: "操作块1" },
430            suffixSymbol: { normal: this.suffixModifierNormal, activated: this.suffixModifierActivated },
431            allowClose: false,
432          },
433          {
434            prefixSymbol: { normal: this.prefixModifierNormal, activated: this.prefixModifierActivated },
435            label: { text: "操作块2" },
436            allowClose: true,
437          },
438          {
439            prefixIcon: { src: $r('sys.media.ohos_ic_public_clock') },
440            label: { text: "操作块3" },
441            allowClose: true,
442          },
443          {
444            prefixIcon: { src: $r('sys.media.ohos_ic_public_cast_stream') },
445            label: { text: "操作块4" },
446            allowClose: true,
447          },
448          {
449            prefixIcon: { src: $r('sys.media.ohos_ic_public_cast_mirror') },
450            label: { text: "操作块5" },
451            allowClose: true,
452          },
453          {
454            prefixIcon: { src: $r('sys.media.ohos_ic_public_cast_stream') },
455            label: { text: "操作块6" },
456            allowClose: true,
457          },
458        ],
459        itemStyle: {
460          size: ChipSize.NORMAL,
461          backgroundColor: $r('sys.color.ohos_id_color_button_normal'),
462          fontColor: $r('sys.color.ohos_id_color_text_primary'),
463          selectedBackgroundColor: $r('sys.color.ohos_id_color_emphasize'),
464          selectedFontColor: $r('sys.color.ohos_id_color_text_primary_contrary'),
465        },
466        selectedIndexes: this.selected_index,
467        multiple: true,
468        chipGroupSpace: { itemSpace: 8, endSpace: 0 },
469        chipGroupPadding: { top: 10, bottom: 10 },
470        onChange: (activatedChipsIndex: Array<number>) => {
471          console.log('chips on clicked, activated index ' + activatedChipsIndex)
472        },
473        suffix: this.ChipGroupSuffix
474      })
475    }
476  }
477}
478
479```
480![](figures/chipGroupDemo3.jpeg)
481
482### 示例4(单选时无障碍朗读)
483
484该示例实现了ChipGroup在单选的情况下,有后缀区域和无后缀区域的屏幕朗读功能。
485
486```typescript
487import { ChipGroup, IconGroupSuffix, SymbolGlyphModifier } from '@kit.ArkUI';
488
489@Builder function DefaultFunction(): void {}
490
491@Component
492struct SectionGroup {
493  @Prop
494  @Require
495  title: ResourceStr;
496  @BuilderParam
497  @Require
498  content: () => void = DefaultFunction;
499
500  build() {
501    Column({ space: 4 }) {
502      Text(this.title)
503        .fontColor('#FF666666')
504        .fontSize(12)
505      Column({ space: 8 }) {
506        this.content()
507      }
508    }
509    .alignItems(HorizontalAlign.Start)
510    .width('100%')
511  }
512}
513@Component
514struct SectionItem {
515  @Prop
516  @Require
517  title: ResourceStr;
518  @BuilderParam
519  @Require
520  content: () => void = DefaultFunction;
521
522  build() {
523    Column({ space: 12 }) {
524      Text(this.title)
525      this.content()
526    }
527    .backgroundColor('#FFFFFFFF')
528    .borderRadius(12)
529    .padding(12)
530    .width('100%')
531  }
532}
533
534@Entry
535@Component
536export struct ChipGroupExample2 {
537  @LocalBuilder
538  Suffix() {
539    IconGroupSuffix({
540      items: [
541        {
542          icon: { src: $r('sys.media.ohos_ic_public_more'), },
543          accessibilityText: '更多',
544          accessibilityDescription: '新手提醒',
545          action: () => {
546            this.getUIContext().getPromptAction().showToast({
547              message: '更多按钮被点击!'
548            });
549          }
550        },
551        {
552          symbol: new SymbolGlyphModifier($r('sys.symbol.more')),
553          accessibilityText: '更多',
554          accessibilityDescription: '新手提醒',
555          action: () => {
556            this.getUIContext().getPromptAction().showToast({
557              message: '更多按钮被点击!'
558            });
559          }
560        },
561        {
562          icon: { src: $r('sys.media.ohos_ic_public_more'), },
563          accessibilityText: '更多',
564          accessibilityDescription: '新手提醒',
565          accessibilityLevel: 'no',
566          action: () => {
567            this.getUIContext().getPromptAction().showToast({
568              message: '更多按钮被点击!'
569            });
570          }
571        }
572      ]
573    })
574  }
575
576  build() {
577    NavDestination() {
578      Scroll() {
579        Column({ space: 12 }) {
580          SectionGroup({ title: '可用的' }) {
581            SectionItem({ title: '单选 无后缀区域' }) {
582              ChipGroup({
583                items: [
584                  {
585                    prefixIcon: {
586                      src: $r('app.media.startIcon')
587                    },
588                    label: { text: "选项1" },
589                    suffixImageIcon: {
590                      src: $r('sys.media.save_button_picture'),
591                      accessibilityText: '保存',
592                      action: () => {
593                        this.getUIContext().getPromptAction().showToast({
594                          message: '后缀图标被点击!'
595                        });
596                      },
597                    }
598                  },
599                  {
600                    label: { text: "选项2" },
601                    suffixSymbol: {
602                      normal: new SymbolGlyphModifier($r('sys.symbol.save')),
603                      activated: new SymbolGlyphModifier($r('sys.symbol.save'))
604                    },
605                    suffixSymbolOptions: {
606                      normalAccessibility: {
607                        accessibilityText: '保存'
608                      },
609                      action: () => {
610                        this.getUIContext().getPromptAction().showToast({
611                          message: '后缀图标被点击!'
612                        });
613                      }
614                    }
615                  },
616                  {
617                    label: { text: "选项3" },
618                    suffixIcon: { src: $r('sys.media.save_button_picture'), }
619                  },
620                  { label: { text: "选项4" } },
621                  { label: { text: "选项5" } },
622                  { label: { text: "选项6" } },
623                  { label: { text: "选项7" } },
624                  { label: { text: "选项8" } },
625                  { label: { text: "选项9" } },
626                ]
627              })
628            }
629            SectionItem({ title: '单选 有后缀区域' }) {
630              ChipGroup({
631                items: [
632                  { label: { text: "选项1" } },
633                  { label: { text: "选项2" } },
634                  { label: { text: "选项3" } },
635                  { label: { text: "选项4" } },
636                  { label: { text: "选项5" } },
637                  { label: { text: "选项6" } },
638                  { label: { text: "选项7" } },
639                  { label: { text: "选项8" } },
640                  { label: { text: "选项9" } },
641                ],
642                suffix: this.Suffix.bind(this),
643              })
644            }
645          }
646        }
647      }
648      .padding({
649        top: 8,
650        bottom: 8,
651        left: 16,
652        right: 16, })
653    }
654    .title('基础用法')
655    .backgroundColor('#F1F3F5')
656  }
657}
658```
659
660### 示例5(多选时无障碍朗读)
661
662该示例实现了ChipGroup在多选的情况下,有后缀区域和无后缀区域的屏幕朗读功能。
663
664```typescript
665import { ChipGroup, IconGroupSuffix, SymbolGlyphModifier } from '@kit.ArkUI';
666
667@Builder function DefaultFunction(): void {}
668
669@Component
670struct SectionGroup {
671  @Prop
672  @Require
673  title: ResourceStr;
674  @BuilderParam
675  @Require
676  content: () => void = DefaultFunction;
677
678  build() {
679    Column({ space: 4 }) {
680      Text(this.title)
681        .fontColor('#FF666666')
682        .fontSize(12)
683      Column({ space: 8 }) {
684        this.content()
685      }
686    }
687    .alignItems(HorizontalAlign.Start)
688    .width('100%')
689  }
690}
691@Component
692struct SectionItem {
693  @Prop
694  @Require
695  title: ResourceStr;
696  @BuilderParam
697  @Require
698  content: () => void = DefaultFunction;
699
700  build() {
701    Column({ space: 12 }) {
702      Text(this.title)
703      this.content()
704    }
705    .backgroundColor('#FFFFFFFF')
706    .borderRadius(12)
707    .padding(12)
708    .width('100%')
709  }
710}
711
712@Entry
713@Component
714export struct ChipGroupExample2 {
715  @LocalBuilder
716  Suffix() {
717    IconGroupSuffix({
718      items: [
719        {
720          icon: { src: $r('sys.media.ohos_ic_public_more'), },
721          accessibilityText: '更多',
722          accessibilityDescription: '新手提醒',
723          action: () => {
724            this.getUIContext().getPromptAction().showToast({
725              message: '更多按钮被点击!'
726            });
727          }
728        },
729        {
730          symbol: new SymbolGlyphModifier($r('sys.symbol.more')),
731          accessibilityText: '更多',
732          accessibilityDescription: '新手提醒',
733          action: () => {
734            this.getUIContext().getPromptAction().showToast({
735              message: '更多按钮被点击!'
736            });
737          }
738        },
739        {
740          icon: { src: $r('sys.media.ohos_ic_public_more'), },
741          accessibilityText: '更多',
742          accessibilityDescription: '新手提醒',
743          accessibilityLevel: 'no',
744          action: () => {
745            this.getUIContext().getPromptAction().showToast({
746              message: '更多按钮被点击!'
747            });
748          }
749        }
750      ]
751    })
752  }
753
754  build() {
755    NavDestination() {
756      Scroll() {
757        Column({ space: 12 }) {
758          SectionGroup({ title: '可用的' }) {
759            SectionItem({ title: '多选 无后缀区域' }) {
760              ChipGroup({
761                items: [
762                  { label: { text: "选项1" } },
763                  { label: { text: "选项2" } },
764                  { label: { text: "选项3" } },
765                  { label: { text: "选项4" } },
766                  { label: { text: "选项5" } },
767                  { label: { text: "选项6" } },
768                  { label: { text: "选项7" } },
769                  { label: { text: "选项8" } },
770                  { label: { text: "选项9" } },
771                ],
772                multiple: true
773              })
774            }
775            SectionItem({ title: '多选 有后缀区域' }) {
776              ChipGroup({
777                items: [
778                  { label: { text: "选项1" } },
779                  { label: { text: "选项2" } },
780                  { label: { text: "选项3" } },
781                  { label: { text: "选项4" } },
782                  { label: { text: "选项5" } },
783                  { label: { text: "选项6" } },
784                  { label: { text: "选项7" } },
785                  { label: { text: "选项8" } },
786                  { label: { text: "选项9" } },
787                ],
788                suffix: this.Suffix.bind(this),
789                multiple: true,
790              })
791            }
792          }
793        }
794      }
795      .padding({
796        top: 8,
797        bottom: 8,
798        left: 16,
799        right: 16, })
800    }
801    .title('基础用法')
802    .backgroundColor('#F1F3F5')
803  }
804}
805```