1# CheckboxGroup
2
3多选框群组,用于控制多选框全选或者不全选状态。
4
5>  **说明:**
6>
7>  该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9## 子组件
10
1112
13## 接口
14
15CheckboxGroup(options?: CheckboxGroupOptions)
16
17创建多选框群组,可以控制群组内的Checkbox全选或者不全选,group值相同的Checkbox和CheckboxGroup为同一群组。
18
19在结合带缓存组件使用时(如List),未被创建的Checkbox选中状态需要应用手动控制。
20
21**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
22
23**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
24
25**系统能力:** SystemCapability.ArkUI.ArkUI.Full
26
27**参数:**
28
29| 参数名  | 类型                                                  | 必填 | 说明                 |
30| ------- | ----------------------------------------------------- | ---- | -------------------- |
31| options | [CheckboxGroupOptions](#checkboxgroupoptions对象说明) | 否   | 配置多选框群组参数。 |
32
33## CheckboxGroupOptions对象说明
34
35**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
36
37**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
38
39**系统能力:** SystemCapability.ArkUI.ArkUI.Full
40
41| 名称 | 类型 | 必填 | 说明 |
42| -------- | -------- | -------- | -------- |
43| group | string | 否 | 群组名称。<br/>**说明:** <br/>多个相同群组名称的CheckboxGroup,仅第一个CheckboxGroup生效。 |
44
45## 属性
46
47除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:
48
49### selectAll
50
51selectAll(value: boolean)
52
53设置是否全选。若同组的[Checkbox](ts-basic-components-checkbox.md)显式设置了select属性,则Checkbox的优先级高。
54
55从API version 10开始,该属性支持[$$](../../../quick-start/arkts-two-way-sync.md)双向绑定变量。
56
57**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
58
59**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
60
61**系统能力:** SystemCapability.ArkUI.ArkUI.Full
62
63**参数:**
64
65| 参数名 | 类型    | 必填 | 说明                         |
66| ------ | ------- | ---- | ---------------------------- |
67| value  | boolean | 是   | 是否全选。<br/>默认值:false |
68
69### selectedColor
70
71selectedColor(value: ResourceColor)
72
73设置被选中或部分选中状态的颜色。
74
75**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
76
77**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
78
79**系统能力:** SystemCapability.ArkUI.ArkUI.Full
80
81**参数:**
82
83| 参数名 | 类型                                       | 必填 | 说明                                                         |
84| ------ | ------------------------------------------ | ---- | ------------------------------------------------------------ |
85| value  | [ResourceColor](ts-types.md#resourcecolor) | 是   | 被选中或部分选中状态的颜色。<br/>默认值:$r('sys.color.ohos_id_color_text_primary_activated')<br/>异常值按照默认值处理。 |
86
87### unselectedColor<sup>10+</sup>
88
89unselectedColor(value: ResourceColor)
90
91设置非选中状态边框颜色。
92
93**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
94
95**系统能力:** SystemCapability.ArkUI.ArkUI.Full
96
97**参数:**
98
99| 参数名 | 类型                                       | 必填 | 说明                 |
100| ------ | ------------------------------------------ | ---- | -------------------- |
101| value  | [ResourceColor](ts-types.md#resourcecolor) | 是   | 非选中状态边框颜色。<br/>默认值:$r('sys.color.ohos_id_color_switch_outline_off')。 |
102
103### mark<sup>10+</sup>
104
105mark(value: MarkStyle)
106
107设置多选框内部图标样式。
108
109**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
110
111**系统能力:** SystemCapability.ArkUI.ArkUI.Full
112
113**参数:**
114
115| 参数名 | 类型                              | 必填 | 说明                 |
116| ------ | --------------------------------- | ---- | -------------------- |
117| value  | [MarkStyle](ts-types.md#markstyle10对象说明) | 是   | 多选框内部图标样式。 |
118
119### checkboxShape<sup>12+</sup>
120
121checkboxShape(value: CheckBoxShape)
122
123设置CheckboxGroup组件形状, 包括圆形和圆角方形。
124
125**卡片能力:** 从API version 12开始,该接口支持在ArkTS卡片中使用。
126
127**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
128
129**系统能力:** SystemCapability.ArkUI.ArkUI.Full
130
131**参数:**
132
133| 参数名 | 类型                                                         | 必填 | 说明                                                         |
134| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
135| value  | [CheckBoxShape](ts-appendix-enums.md#checkboxshape11) | 是   | 设置CheckboxGroup组件形状, 包括圆形和圆角方形。<br/>默认值:CheckBoxShape.CIRCLE。 <br />**说明**:<br/>CheckboxGroup组件形状按照设置显示。<br/>CheckboxGroup内所有没有单独设置shape类型的Checkbox形状和CheckboxGroup的保持一致。<br/>CheckboxGroup内有单独设置shape类型的Checkbox形状则优先于CheckboxGroup,按照设置形状显示。 |
136
137## 事件
138
139除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件:
140
141### onChange
142
143onChange(callback: (event: CheckboxGroupResult) => void )
144
145CheckboxGroup的选中状态或群组内的Checkbox的选中状态发生变化时,触发回调。
146
147**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
148
149**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
150
151**系统能力:** SystemCapability.ArkUI.ArkUI.Full
152
153**参数:**
154
155| 参数名 | 类型                                                | 必填 | 说明               |
156| ------ | --------------------------------------------------- | ---- | ------------------ |
157| event  | [CheckboxGroupResult](#checkboxgroupresult对象说明) | 是   | 多选框群组的信息。 ||
158
159## CheckboxGroupResult对象说明
160
161**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
162
163**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
164
165**系统能力:** SystemCapability.ArkUI.ArkUI.Full
166
167| 名称    | 类型   | 只读 | 可选 | 说明      |
168| ------ | ------ | ------- | ------- | ------- |
169| name   | Array&lt;string&gt; | 否 | 否 | 群组内所有被选中的多选框名称。 |
170| status | [SelectStatus](#selectstatus枚举说明) | 否 | 否 | 选中状态。 |
171
172## SelectStatus枚举说明
173
174**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
175
176**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
177
178**系统能力:** SystemCapability.ArkUI.ArkUI.Full
179
180| 名称  | 说明 |
181| ----- | -------------------- |
182| All   | 群组多选择框全部选择。 |
183| Part  | 群组多选择框部分选择。 |
184| None  | 群组多选择框全部没有选择。 |
185
186## 示例
187
188### 示例1(设置多选框群组)
189
190该示例用于控制多选框全选或者不全选状态。
191
192```ts
193// xxx.ets
194@Entry
195@Component
196struct CheckboxExample {
197  build() {
198    Scroll() {
199      Column() {
200        // 全选按钮
201        Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
202          CheckboxGroup({ group: 'checkboxGroup' })
203            .checkboxShape(CheckBoxShape.ROUNDED_SQUARE)
204            .selectedColor('#007DFF')
205            .onChange((itemName: CheckboxGroupResult) => {
206              console.info("checkbox group content" + JSON.stringify(itemName))
207            })
208          Text('Select All').fontSize(14).lineHeight(20).fontColor('#182431').fontWeight(500)
209        }
210
211        // 选项1
212        Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
213          Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
214            .selectedColor('#007DFF')
215            .shape(CheckBoxShape.ROUNDED_SQUARE)
216            .onChange((value: boolean) => {
217              console.info('Checkbox1 change is' + value)
218            })
219          Text('Checkbox1').fontSize(14).lineHeight(20).fontColor('#182431').fontWeight(500)
220        }.margin({ left: 36 })
221
222        // 选项2
223        Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
224          Checkbox({ name: 'checkbox2', group: 'checkboxGroup' })
225            .selectedColor('#007DFF')
226            .shape(CheckBoxShape.ROUNDED_SQUARE)
227            .onChange((value: boolean) => {
228              console.info('Checkbox2 change is' + value)
229            })
230          Text('Checkbox2').fontSize(14).lineHeight(20).fontColor('#182431').fontWeight(500)
231        }.margin({ left: 36 })
232
233        // 选项3
234        Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
235          Checkbox({ name: 'checkbox3', group: 'checkboxGroup' })
236            .selectedColor('#007DFF')
237            .shape(CheckBoxShape.ROUNDED_SQUARE)
238            .onChange((value: boolean) => {
239              console.info('Checkbox3 change is' + value)
240            })
241          Text('Checkbox3').fontSize(14).lineHeight(20).fontColor('#182431').fontWeight(500)
242        }.margin({ left: 36 })
243      }
244    }
245  }
246}
247```
248![checkboxGroup](figures/checkboxGroup.gif)
249
250### 示例2(自定义勾选样式)
251
252该示例通过配置mark实现自定义多选框群组的勾选样式。
253
254```ts
255// xxx.ets
256@Entry
257@Component
258struct Index {
259
260  build() {
261    Row() {
262      Column() {
263        Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
264          CheckboxGroup({ group: 'checkboxGroup' })
265            .checkboxShape(CheckBoxShape.ROUNDED_SQUARE)
266            .selectedColor(Color.Orange)
267            .onChange((itemName: CheckboxGroupResult) => {
268              console.info("checkbox group content" + JSON.stringify(itemName))
269            })
270            .mark({
271              strokeColor:Color.Black,
272              size: 40,
273              strokeWidth: 5
274            })
275            .unselectedColor(Color.Red)
276            .width(30)
277            .height(30)
278          Text('Select All').fontSize(20)
279        }.margin({right:15})
280        Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
281          Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
282            .selectedColor(0x39a2db)
283            .shape(CheckBoxShape.ROUNDED_SQUARE)
284            .onChange((value: boolean) => {
285              console.info('Checkbox1 change is'+ value)
286            })
287            .mark({
288              strokeColor:Color.Black,
289              size: 50,
290              strokeWidth: 5
291            })
292            .unselectedColor(Color.Red)
293            .width(30)
294            .height(30)
295          Text('Checkbox1').fontSize(20)
296        }
297        Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
298          Checkbox({ name: 'checkbox2', group: 'checkboxGroup' })
299            .selectedColor(0x39a2db)
300            .shape(CheckBoxShape.ROUNDED_SQUARE)
301            .onChange((value: boolean) => {
302              console.info('Checkbox2 change is' + value)
303            })
304            .width(30)
305            .height(30)
306          Text('Checkbox2').fontSize(20)
307        }
308        Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
309          Checkbox({ name: 'checkbox3', group: 'checkboxGroup' })
310            .selectedColor(0x39a2db)
311            .shape(CheckBoxShape.ROUNDED_SQUARE)
312            .onChange((value: boolean) => {
313              console.info('Checkbox3 change is' + value)
314            })
315            .width(30)
316            .height(30)
317          Text('Checkbox3').fontSize(20)
318        }
319      }
320      .width('100%')
321    }
322    .height('100%')
323  }
324}
325```
326
327![checkboxGroup](figures/checkboxGroup2.gif)
328
329