安卓开发教程22: CheckBox 复选框

437 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第22天,点击查看活动详情

前面我们了解了Android 的 Activity 以及一些 控件 比如图片,文本等。接下来我们再来看一些行走江湖必备的控件。那么我们今天来学习控件是 CheckBox 复选框。

CheckBox 基本用法

让我们先来实现一个 CheckBox:

<CheckBox
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="我是一个复选按钮" />

image.png

我们看到 CheckBox 使用方法很简单,那么在实际开发过程中我们的应用需要根据UI设计的不画面来定制开发,比如 UI 设计的图中 复选框按钮是这个样子的:

image.png

这个时候我们就需要对原生的 CheckBox 进行一些定制,需要用到 CheckBox 的 button 属性来制定一个 drawable 文件从而改变选择按钮的图案。

<CheckBox
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:button="@drawable/check_box"
    android:text="我是一个复选按钮" />

在 drawable 文件夹上右键 -> New -> Drawable Resource File

image.png

输入我们想要创建文件的名字,生成一个 xml 文件

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item  android:state_checked="true" android:drawable="@drawable/check1l"></item>

    <item android:drawable="@drawable/checkbox"></item>

</selector>

在其中用 selector -> item 的 state_checked 来判断选择/未选择的状态,利用 drawable来指定相对应的图片。 Android Studio 可以帮我们把图片的状态显示出来,让我们方便查看相对应的配置。(这里 item 的 state_checked 属性 默认状态为未选中)

image.png

注意:这里 item 的 state_checked=“true” 也就是选中状态一定要写在未选中的上面。我们第一次写在下面怎么运行也点不出选中状态。

CheckBox 事件处理

CheckBox 事件处理 需要用到 setOnCheckedChangeListener 监听器。使用方法与点击事件类似:

  1. 给 CheckBox 绑定 setOnCheckedChangeListener 监听器
  2. 在 onCheckedChanged 方法中写相应的逻辑(该方法有两个参数 ,compoundButton 为 CheckBox 按钮本身,布尔值 b 为选择/未选中状态)

代码:

@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
    //判断是否寻找改变 CheckBox 的文本
    if(b){
        compoundButton.setText("我被选中");
    }else{
        compoundButton.setText("我是一个复选框");
    }
}

效果:

image.png

总结一下:

CheckBox 在日常开发还经常使用的属性方法:

  1. 属性 checked 用来指定选择状态
  2. 属性 button 用来指定按钮的图形资源
  3. 方法 setOnCheckedChangeListener 用来设置的监听器
  4. 方法 setChecked 用来设置按钮的选择状态
  5. 方法 setButtonDrawable 用来设置按钮的图形资源
  6. 方法 isChecked 用来判断按钮是否选择