Widget简单组件 CheckBox复选框

文章目录

CheckBox复选框

CheckBox复选框是一种具有双状态的按钮,具有选中或者未选中两种状态。在布局文件中定义复选按钮时,对每一个按钮注册OnCheckedChangeListener事件监听,然后在onCheckedChanged()事件处理方法中根据isChecked参数来判断选项是否被选中。
CheckBox和 RadioButton的主要区别如下:

  • RadioButton单选按钮被选中后,再次单击时无法改变其状态,而CheckBox复选框被选中后,可以通过单击来改变其状态。
  • 在RadioButton单选按钮组中,只允许选中一个;而在CheckBox复选框中,允许同时选中多个。
  • 在大部分UI框架中RadioButton默认都以圆形表示,CheckBox 默认都以矩形表示。

代码演示

下面通过一个简单的示例演示CheckBox的用法﹐以“体育爱好”的多选为例,人们的“体育爱好”可能有足球、篮球等,而人的性别选择有所不同,性别只能选择“男”或“女”,且两者互斥。

《Widget简单组件 CheckBox复选框》
《Widget简单组件 CheckBox复选框》
布局代码如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center_horizontal" android:orientation="vertical">
    <!-- 基本显示 1 -->
    <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/title" android:textSize="20sp" android:textStyle="bold" />
    <!--足球 2 -->
    <CheckBox android:id="@+id/checkbox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/football" android:textSize="16sp" />
    <!-- 篮球 3 -->
    <CheckBox android:id="@+id/checkbox2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/basketball" android:textSize="16sp" />
    <!-- 排球 4 -->
    <CheckBox android:id="@+id/checkbox3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/volleyball" android:textSize="16sp" />
</LinearLayout>

代码解释如下:标号1处的TextView用于显示用户的标题;标号2处定义的是“足球”复选框;标号3处定义的是“篮球”复选框;标号4处定义的是“排球”复选框。

上述代码中,复选框的文本部分使用了字符串资源﹐例如“足球”的文本是引用的strings.xml文件中的字符串

strings.xml中的字符串定义如下所示

<resources>
    <string name="title">你喜欢的运动是:</string>
    <string name="app_name">复选框测试</string>
    <string name="football">足球</string>
    <string name="basketball">篮球</string>
    <string name="volleyball">排球</string>
</resources>

通常在开发过程中使用strings.xml文件的目的如下

  • 为了国际化。Android建议将屏幕中显示的文字定义在strings.xml 中,如果今后需要进行国际化时仅需要修改string.xml文件即可。
  • 为了减少应用的体积,降低数据的冗余。

下面在相应的Activity中演示复选框的使用,当用户选择不同的“爱好”时,在屏幕上显示用户的选择结果

《Widget简单组件 CheckBox复选框》
《Widget简单组件 CheckBox复选框》

代码如下

package com.qst.demo2;

import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class CheckBoxDemoActivity extends AppCompatActivity { 
    //声明复选框 1
    private CheckBox footballChx;
    private CheckBox basketballChx;
    private CheckBox volleyballChx;
    @Override  //重写父类的onCreate方法
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); //调用父类的onCreate方法创建Activity
        setContentView(R.layout.checkbox_demo);  //设置布局
        //通过findViewById获得CheckBox对象 2
        footballChx = (CheckBox) findViewById(R.id.checkbox1);
        basketballChx = (CheckBox) findViewById(R.id.checkbox2);
        volleyballChx = (CheckBox) findViewById(R.id.checkbox3);
        //注册事件监听器 3
        footballChx.setOnCheckedChangeListener(listener);
        basketballChx.setOnCheckedChangeListener(listener);
        volleyballChx.setOnCheckedChangeListener(listener);

    }
    //使用内部类形式的响应事件 4
    private CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() { 
        @Override //重写接口的方法
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
            switch (buttonView.getId()) { 
                case R.id.checkbox1:
                    //选择足球
                    if (isChecked) { 
                        //Toast的使用 5
                        Toast.makeText(CheckBoxDemoActivity.this, "你喜欢足球",
                                Toast.LENGTH_LONG).show();
                    }
                    break;
                case R.id.checkbox2:
                    //选择篮球
                    if (isChecked) { 
                        Toast.makeText(CheckBoxDemoActivity.this, "你喜欢篮球",
                                Toast.LENGTH_LONG).show();
                    }
                    break;
                case R.id.checkbox3:
                    //选择排球
                    if (isChecked) { 
                        Toast.makeText(CheckBoxDemoActivity.this, "你喜欢排球",
                                Toast.LENGTH_LONG).show();
                    }
                    break;
                default:
                    break;
            }
        }
    };
}

代码解释如下:标号1处定义了3个CheckBox复选框,供用户进行选择;标号2处对标号1处所定义的各个属性变量初始化,通过对属性变量的赋值,使其可以进行后续的业务逻辑操作;标号3处分别为3个CheckBox对象设置监听器,用于监听各自的选中或取消事件;标号4处定义了一个监听器对象,用于监听并实现3个CheckBox的业务逻辑功能,当用户单击不同的CheckBox时,屏幕上会通过Toast对象显示相应的文本信息。Toast是 Android中用来显示提示信息的一种机制,与 Dialog 不同的是:Toast 提示没有焦点,且时间有限,在一定的时间后会自动消失。

在AndroidMainfest.xml清单文件中声明Activity

《Widget简单组件 CheckBox复选框》

《Widget简单组件 CheckBox复选框》
运行结果

《Widget简单组件 CheckBox复选框》

    原文作者:stormzhuo
    原文地址: https://blog.csdn.net/weixin_42768634/article/details/115266817
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞