• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
20
21**系统能力:** SystemCapability.ArkUI.ArkUI.Full
22
23**参数:**
24
25| 参数名  | 类型                                                  | 必填 | 描述                 |
26| ------- | ----------------------------------------------------- | ---- | -------------------- |
27| options | [CheckboxGroupOptions](#checkboxgroupoptions对象说明) | 否   | 配置多选框群组参数。 |
28
29## CheckboxGroupOptions对象说明
30
31| 名称 | 类型 | 必填 | 说明 |
32| -------- | -------- | -------- | -------- |
33| group | string | 否 | 群组名称。<br/>**说明:** <br/>多个相同群组名称的CheckboxGroup,仅第一个CheckboxGroup生效。 |
34
35## 属性
36
37除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性:
38
39| 名称 | 参数类型 | 描述 |
40| -------- | -------- | -------- |
41| selectAll | boolean | 设置是否全选。<br/>默认值:false,若同组的[Checkbox](ts-basic-components-checkbox.md)设置了select属性,则Checkbox的优先级高。<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。<br/>**说明:** <br/>若同组的[Checkbox](ts-basic-components-checkbox.md)显式设置了select属性,则Checkbox的优先级高。<br />从API version 10开始,该属性支持[$$](../../../quick-start/arkts-two-way-sync.md)双向绑定变量。 |
42| selectedColor | [ResourceColor](ts-types.md#resourcecolor) | 设置被选中或部分选中状态的颜色。<br/>默认值:$r('sys.color.ohos_id_color_text_primary_activated')。<br/>异常值按照默认值处理。<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。 |
43| unselectedColor<sup>10+</sup> | [ResourceColor](ts-types.md#resourcecolor) | 设置非选中状态边框颜色。<br/>默认值:'#33ffffff'。 |
44| mark<sup>10+</sup> | [MarkStyle](#markstyle10对象说明) | 多选框内部图标样式。 |
45
46## 事件
47
48除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件:
49
50| 名称 | 功能描述 |
51| -------- | -------- |
52| onChange (callback: (event: [CheckboxGroupResult](#checkboxgroupresult对象说明)) => void ) |CheckboxGroup的选中状态或群组内的Checkbox的选中状态发生变化时,触发回调。<br/>从API version 9开始,该接口支持在ArkTS卡片中使用。|
53
54## CheckboxGroupResult对象说明
55
56从API version 9开始,该接口支持在ArkTS卡片中使用。
57
58| 名称     | 类型   | 描述      |
59| ------ | ------ | ------- |
60| name   | Array&lt;string&gt; | 群组内所有被选中的多选框名称。 |
61| status | [SelectStatus](#selectstatus枚举说明) | 选中状态。 |
62
63## SelectStatus枚举说明
64
65从API version 9开始,该接口支持在ArkTS卡片中使用。
66
67| 名称  | 描述 |
68| ----- | -------------------- |
69| All   | 群组多选择框全部选择。 |
70| Part  | 群组多选择框部分选择。 |
71| None  | 群组多选择框全部没有选择。 |
72
73## MarkStyle<sup>10+</sup>对象说明
74
75| 名称        | 类型                                       | 必填 | 默认值      | 描述                                                         |
76| ----------- | ------------------------------------------ | ---- | ----------- | ------------------------------------------------------------ |
77| strokeColor | [ResourceColor](ts-types.md#resourcecolor) | 否   | Color.White | 内部图标颜色。                                               |
78| size        | [Length](ts-types.md#length)               | 否   | -           | 内部图标大小,单位vp。默认大小与多选框群组组件宽度设置值一致。<br />不支持百分比形式设置。当设置为非法值时,按照默认值处理。 |
79| strokeWidth | [Length](ts-types.md#length)               | 否   | 2           | 内部图标粗细,单位vp。不支持百分比形式设置。当设置为非法值时,按照默认值处理。 |
80
81## 示例
82
83### 示例1
84
85```ts
86// xxx.ets
87@Entry
88@Component
89struct CheckboxExample {
90  build() {
91    Scroll() {
92      Column() {
93        // 全选按钮
94        Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
95          CheckboxGroup({ group: 'checkboxGroup' })
96            .selectedColor('#007DFF')
97            .onChange((itemName: CheckboxGroupResult) => {
98              console.info("checkbox group content" + JSON.stringify(itemName))
99            })
100          Text('Select All').fontSize(14).lineHeight(20).fontColor('#182431').fontWeight(500)
101        }
102
103        // 选项1
104        Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
105          Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
106            .selectedColor('#007DFF')
107            .shape(CheckBoxShape.ROUNDED_SQUARE)
108            .onChange((value: boolean) => {
109              console.info('Checkbox1 change is' + value)
110            })
111          Text('Checkbox1').fontSize(14).lineHeight(20).fontColor('#182431').fontWeight(500)
112        }.margin({ left: 36 })
113
114        // 选项2
115        Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
116          Checkbox({ name: 'checkbox2', group: 'checkboxGroup' })
117            .selectedColor('#007DFF')
118            .shape(CheckBoxShape.ROUNDED_SQUARE)
119            .onChange((value: boolean) => {
120              console.info('Checkbox2 change is' + value)
121            })
122          Text('Checkbox2').fontSize(14).lineHeight(20).fontColor('#182431').fontWeight(500)
123        }.margin({ left: 36 })
124
125        // 选项3
126        Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
127          Checkbox({ name: 'checkbox3', group: 'checkboxGroup' })
128            .selectedColor('#007DFF')
129            .shape(CheckBoxShape.ROUNDED_SQUARE)
130            .onChange((value: boolean) => {
131              console.info('Checkbox3 change is' + value)
132            })
133          Text('Checkbox3').fontSize(14).lineHeight(20).fontColor('#182431').fontWeight(500)
134        }.margin({ left: 36 })
135      }
136    }
137  }
138}
139```
140![checkboxGroup](figures/checkboxGroup.gif)
141
142### 示例2
143
144```ts
145// xxx.ets
146@Entry
147@Component
148struct Index {
149
150  build() {
151    Row() {
152      Column() {
153        Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
154          CheckboxGroup({ group: 'checkboxGroup' })
155            .selectedColor(Color.Orange)
156            .onChange((itemName: CheckboxGroupResult) => {
157              console.info("checkbox group content" + JSON.stringify(itemName))
158            })
159            .mark({
160              strokeColor:Color.Black,
161              size: 40,
162              strokeWidth: 5
163            })
164            .unselectedColor(Color.Red)
165            .width(30)
166            .height(30)
167          Text('Select All').fontSize(20)
168        }.margin({right:15})
169        Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
170          Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
171            .selectedColor(0x39a2db)
172            .shape(CheckBoxShape.ROUNDED_SQUARE)
173            .onChange((value: boolean) => {
174              console.info('Checkbox1 change is'+ value)
175            })
176            .mark({
177              strokeColor:Color.Black,
178              size: 50,
179              strokeWidth: 5
180            })
181            .unselectedColor(Color.Red)
182            .width(30)
183            .height(30)
184          Text('Checkbox1').fontSize(20)
185        }
186        Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
187          Checkbox({ name: 'checkbox2', group: 'checkboxGroup' })
188            .selectedColor(0x39a2db)
189            .shape(CheckBoxShape.ROUNDED_SQUARE)
190            .onChange((value: boolean) => {
191              console.info('Checkbox2 change is' + value)
192            })
193            .width(30)
194            .height(30)
195          Text('Checkbox2').fontSize(20)
196        }
197        Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
198          Checkbox({ name: 'checkbox3', group: 'checkboxGroup' })
199            .selectedColor(0x39a2db)
200            .shape(CheckBoxShape.ROUNDED_SQUARE)
201            .onChange((value: boolean) => {
202              console.info('Checkbox3 change is' + value)
203            })
204            .width(30)
205            .height(30)
206          Text('Checkbox3').fontSize(20)
207        }
208      }
209      .width('100%')
210    }
211    .height('100%')
212  }
213}
214```
215
216![checkboxGroup](figures/checkboxGroup2.gif)
217
218