欢迎回来Android入门教程的第六课,这一节学习两种选择组件,分别是RadioButton(单选框)和CheckBox(复选框)。这两种组件也是会常用到的,进入正题。

1.RadioButton & RadioGroup

在讲RadioButton之前先介绍RadioGroup,顾名思义就是一个单选组,在这个组内单选而不影响其他组的单选状态。

RadioButton的一些重要属性如下:

  • android:checked 选中状态
  • android:text 显示文本
  • 还有许多text的属性,如颜色、字体大小、对齐方式等属性

下面来直接看例子吧

 <LinearLayout
        android:padding="20dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <RadioGroup
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <RadioButton
                android:id="@+id/r1"
                android:layout_width="100dp"
                android:layout_height="40dp"
                android:text="1 单选框1"/>
            <RadioButton
                android:id="@+id/r2"
                android:layout_width="100dp"
                android:layout_height="40dp"
                android:text="1 单选框2"/>
        </RadioGroup>

        <RadioGroup
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <RadioButton
                android:id="@+id/r3"
                android:layout_width="100dp"
                android:layout_height="40dp"
                android:text="2 单选框1" />
            <RadioButton
                android:id="@+id/r4"
                android:layout_width="100dp"
                android:layout_height="40dp"
                android:text="2 单选框2"/>
        </RadioGroup>

        <CheckBox
            android:id="@+id/c1"
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:text="复选框1"/>
        <CheckBox
            android:id="@+id/c2"
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:text="复选框2"/>
        <CheckBox
            android:id="@+id/c3"
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:text="复选框3"/>
    </LinearLayout>

这里我把RadioButton和CheckBox写在了一起 ,先讲RadioButton。上述布局效果如下:

再补充一点,RadioGroup也拥有android:orientation属性,可以直接由它决定内部组件排布方式,默认vertical。

那么布局文件写完了,下面来用代码监听一下选中事件吧。首先获取RadioButton组件,到这应该很熟练了吧。

        RadioButton r1 = findViewById(R.id.r1);
        RadioButton r2 = findViewById(R.id.r2);
        RadioButton r3 = findViewById(R.id.r3);
        RadioButton r4 = findViewById(R.id.r4);
        r1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                System.out.println("r1 选中状态变更为" + b);
            }
        });
        r2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                System.out.println("r2 选中状态变更为" + b);
            }
        });
        r3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                System.out.println("r3 选中状态变更为" + b);
            }
        });
        r4.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                System.out.println("r4 选中状态变更为" + b);
            }
        });

使用 RadioButton.setOnCheckedChangeListener 即可为它添加一个监听事件,而内部接口的boolean b的值则为改变后的状态,也就是当前选中状态。运行一下试试。

上面是实机运行的效果,从上到下依次点击四个单选框,在logcat内的结果如下所示:

图中我用横线划分了一下,一块区域对应一次点击,可以看到当组内一个单选框的状态被改变,其他组件也会相应触发监听事件。

2.CheckBox

接着来学习一下CheckBox的使用,还是同上,拥有android:checked属性,可以设置默认选中状态。和RadioButton一样,先获取组件,再使用CheckBox.setOnCheckedChangeListener()设置监听事件。

        CheckBox checkBox1 = findViewById(R.id.c1);
        CheckBox checkBox2 = findViewById(R.id.c2);
        CheckBox checkBox3 = findViewById(R.id.c3);
        checkBox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                System.out.println("c1选中状态变更为" + b);
            }
        });
        checkBox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                System.out.println("c2选中状态变更为" + b);
            }
        });
        checkBox3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                System.out.println("c3选中状态变更为" + b);
            }
        });

这样就OK啦,就不再做演示了,自己可以试一试。那么RadioButton和CheckBox都可以通过代码使用<>.setChecked(boolean b)来设置选中状态。

本期就到此结束啦,下一期来介绍两种滚动视图,ScrollView和HorizontalScrollView。感谢观看。


0 条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注