一、导读

  • 安卓应用中,常常需要用户从若干选项中进行选择,有时要求只能选择一个,那么就要使用单选按钮(RadioButton),有时要求用户可以选择多个,那么就要使用复选框(CheckBox)。

二、单选按钮组

1、常用属性

属性 含义
orientation vertical 或 horizontal,决定单选按钮是垂直排列还是水平排列
layout_width 宽度(单位:dp)
layout_height 高度(单位:dp)

2、设置事件监听器

设置监听器 作用
setOnCheckedChangeListener 监听单选按钮选中状态的变化
setOnClickListener 监听单选按钮组是否被单击了

3、重要方法

方法 作用
getCheckedRadioButtonId() 用于获取选中的单选按钮的id

三、单选按钮

1、常用方法

方法 作用
isChecked() true 或false,显示单选按钮的选中状态
setChecked() 参数是true或false,用来设置单选按钮的选中状态

2、设置事件监听器

设置监听器 作用
setOnCheckedChangeListener 监听单选按钮选中状态的变化
setOnClickListener 监听单选按钮是否被单击了

四、复选框

1、常用方法

方法 作用
isChecked() true 或false,显示复选框的选中状态
setChecked() 参数是true或false,用来设置复选框的选中状态

2、设置事件监听器

设置监听器 作用
setOnCheckedChangeListener 监听复选框选中状态的变化
setOnClickListener 监听复选框是否被单击了

五、案列演示

1、准备工作

  • 基于Empty Activity模板创建安卓应用 - SetBasicInformation
  • 修改字符串资源
    在这里插入图片描述

2、主布局资源文件

在这里插入图片描述
代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="20dp"
    android:paddingRight="20dp"
    android:paddingTop="30dp"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tvSetInformation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginBottom="30dp"
        android:text="@string/set_information"
        android:textColor="#0000ff"
        android:textSize="30sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/tv_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/name"
            android:textColor="#000000"
            android:textSize="16sp" />

        <EditText
            android:id="@+id/et_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="@string/input_name"
            android:singleLine="true" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/tv_gender"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/gender"
            android:textColor="#000000"
            android:textSize="16sp" />

        <RadioGroup
            android:id="@+id/rg_gender"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <RadioButton
                android:id="@+id/rb_male"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="true"
                android:text="@string/male" />

            <RadioButton
                android:id="@+id/rb_female"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="15dp"
                android:text="@string/female" />
        </RadioGroup>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/tv_hobby"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hobby"
            android:textColor="#000000"
            android:textSize="16sp" />

        <CheckBox
            android:id="@+id/cb_music"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/music" />

        <CheckBox
            android:id="@+id/cb_bead"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/read" />

        <CheckBox
            android:id="@+id/cb_food"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/food" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp">

        <Button
            android:id="@+id/btn_ok"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="doOK"
            android:text="@string/ok"
            android:layout_marginEnd="10dp"/>

        <Button
            android:id="@+id/btn_clear"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="doClear"
            android:text="@string/clear"
            android:layout_marginEnd="10dp"/>

        <Button
            android:id="@+id/btn_exit"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="doExit"
            android:text="@string/exit" />
    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginTop="10dp"
        android:background="#dddddd"
        />

    <TextView
        android:id="@+id/tv_result"
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_marginTop="30dp"
        android:textSize="15sp" />

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginTop="10dp"
        android:background="#dddddd"
        />


</LinearLayout>

3、主界面类实现功能

public class MainActivity extends AppCompatActivity {

    private EditText etName;   // 姓名编辑框
    private RadioGroup rgGender;  // 性别单选按钮
    private RadioButton rbMale;    // 男性单选按钮
    private RadioButton rbFemale;    // 女性单选按钮
    private CheckBox cbMusic;     //  音乐复选框
    private CheckBox cbRead;     //  阅读复选框
    private CheckBox cbFood;     // 美食复选框
    private TextView tvResult;   //  结果标签


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 获取实例
        etName = findViewById(R.id.et_name);
        rgGender = findViewById(R.id.rg_gender);
        rbMale = findViewById(R.id.rb_male);
        rbFemale = findViewById(R.id.rb_female);
        cbMusic = findViewById(R.id.cb_music);
        cbFood = findViewById(R.id.cb_food);
        cbRead = findViewById(R.id.cb_bead);
        tvResult = findViewById(R.id.tv_result);

        rgGender.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (rgGender.getCheckedRadioButtonId()){
                    case R.id.rb_male:    // 选中男性按钮
                        Toast.makeText(MainActivity.this, "男", Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.rb_female:
                        Toast.makeText(MainActivity.this, "女", Toast.LENGTH_SHORT).show();
                        break;
                }
            }
        });


    }

    /**
     * 确定按钮单击事件处理方法
     * @param view
     */
    public void doOK(View view){
        // 获取姓名
        String name = etName.getText().toString().trim();

        // 获取性别
        String gender = "";
        // 判断用户选中哪个单选按钮
        switch (rgGender.getCheckedRadioButtonId()){
            case R.id.rb_male:    // 选中男性按钮
                gender= rbMale.getText().toString();
                break;
            case R.id.rb_female:
                gender = rbFemale.getText().toString();
                break;
        }

        // 获取爱好
        StringBuilder builder = new StringBuilder();   // 字符串生成器
        // 判断用户是否选中了音乐复选框
        if(cbMusic.isChecked()){
            builder.append(cbMusic.getText().toString() + " ");

        }
        // 判断用户是否选中了阅读复选框
        if (cbRead.isChecked()){
            builder.append(cbRead.getText().toString()+" ");
        }

        // 判断用户是否选中了美食复选框
        if (cbFood.isChecked()){
            builder.append(cbFood.getText().toString()+" ");
        }
        String hobbies = builder.toString().trim();

        // 通过标识符显示基本信息
        String result = "姓名:" + name + "\n"
                + "性别:" + gender + "\n"
                + "爱好:" + hobbies;
        tvResult.setText(result);

    }

    /**
     * 清除按钮单击事件处理方法
     * @param view
     */
    public void doClear(View view){
        etName.setText("");
        rbMale.setChecked(true);
        cbFood.setChecked(false);
        cbMusic.setChecked(false);
        cbRead.setChecked(false);
        tvResult.setText("");

    }

    /**
     * 退出单击事件处理方法
     * @param view
     */
    public void doExit(View view){
        finish();
    }

}

4、启动应用查看效果

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐