Skip to content

CheckBox

效果

子组件

参数

name

指定多选框名称。

group

指定多选框所属的组名。

bash
 Checkbox({name:'checkbox1',group:'checkBoxGroup'})

属性

select (初始化的时候使用)(重要)

设置选中状态(true)就是选中 false 就是未选中.

selectedColor(重要)

设置多选框选中状态颜色。

unselectedColor(不重要)

设置多选框非选中状态的边框颜色

mark

设置多选框 内部钩子的样式宽度 颜色.大小等等

bash
 .mark({
    strokeColor:Color.Black,
    size: 150,
    strokeWidth: 5
})

shape

设置 CheckBox 组件形状,包括圆形和圆角方形。

js
.shape(CheckBoxShape.ROUNDED_SQUARE) // 方形
.shape(CheckBoxShape.CIRCLE) // 圆形

事件

onChange

js
.onChange((value:boolean)=>{
  console.log(value.toString())
})

示例

  • 类型
js
export interface checkboxItem {
  value: string;
  isSelected: boolean;
}
export interface checkboxData {
  change: boolean;
  data: checkboxItem[];
}
  • 代码
js


import { checkboxData, checkboxItem } from '../Type/Index1Type';

@Entry
@Component
struct Index {
    @State ListData: string[] = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
    @State checkboxData: string[] = []
    @State checkboxList: checkboxData = {
        change: false,
        data: [
            {
                value: "苹果",
                isSelected: false,
            },
            {
                value: "香蕉",
                isSelected: false,
            },
            {
                value: "橘子",
                isSelected: false,
            },
            {
                value: "荔枝",
                isSelected: false,
            },
        ]
    }

    checkboxFilter(item: checkboxItem) {
        item.isSelected = !item.isSelected;
        this.checkboxList.change = !this.checkboxList.change;
        if (item.isSelected) {
            // 真
            this.checkboxData.push(item.value)
        } else {
            // 假的
            let result: string[] = []
            this.checkboxData.forEach((content, index) => {
                if (content != item.value) {
                    result.push(content)
                }
            })
            this.checkboxData = result
        }
    }

    build() {

        Column() {
            Row() {
                Text("兴趣")
                    .fontColor(Color.Red)
                    .fontSize(16)
                    .margin({ right: 10 })
                    .width(60)
                Flex({
                    direction: FlexDirection.Row,
                    wrap: FlexWrap.Wrap,
                    alignContent: FlexAlign.Start,
                    justifyContent: FlexAlign.SpaceBetween
                }) {
                    ForEach(this.checkboxList.data, (item: checkboxItem, index) => {
                        Row() {
                            Checkbox({ name: item.value, group: 'group1' })
                                .shape(CheckBoxShape.ROUNDED_SQUARE)
                                .select(item.isSelected)
                                .selectedColor(Color.Red)
                                .unselectedColor(Color.Green)
                                .shape(CheckBoxShape.CIRCLE)
                                .mark({
                                    strokeColor: Color.Black,
                                    size: 20,
                                    strokeWidth: 5
                                })
                                .onChange((value: boolean) => {
                                    this.checkboxFilter(item)
                                })
                                .margin({
                                    right: 10
                                })
                            Text(item.value).fontSize(22).fontColor(Color.Black)
                        }.onClick(() => {
                            this.checkboxFilter(item)
                        }).margin({
                            bottom: 20
                        })

                    })
                }.layoutWeight(1)
            }.width('90%').justifyContent(FlexAlign.Center)

            Row() {
                Text("多选框的结果是" + JSON.stringify(this.checkboxData)).fontSize(18).fontColor(Color.Red)
            }
        }

    }
}