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