UI控件之RadioButton(单选按钮)&Checkbox(复选按钮)

Posted MakeYourChance

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UI控件之RadioButton(单选按钮)&Checkbox(复选按钮)相关的知识,希望对你有一定的参考价值。

(一)概述:
这里写图片描述
(二)RadioButton的基本用法与事件处理:

这里写图片描述
效果图:
这里写图片描述

实现代码:
xml文件

<?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:orientation="vertical" >

    <TextView 
        android:text="性别: "
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <RadioGroup android:id="@+id/sex"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <RadioButton 
            android:text="男"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
         <RadioButton 
            android:text="女"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </RadioGroup>

    <Button 
        android:id="@+id/SexId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="选择性别"/>

</LinearLayout>

MainActivity.java

public class RadioButtonTest extends Activity {

    private RadioGroup Rgroup;
    private Button Rbutton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.radio_button_test);
        Rgroup = (RadioGroup) findViewById(R.id.sex);
        Rbutton = (Button) findViewById(R.id.SexId);
        Rbutton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                int len = Rgroup.getChildCount();//获得单选按钮组的选项个数
                String msgString = "";

                for (int i = 0; i <len; i++) {
                    RadioButton radioButton = (RadioButton) Rgroup.getChildAt(i);
                    if (radioButton.isChecked()) {
                        msgString = radioButton.getText().toString();
                        break;
                    }
                }

                Toast.makeText(RadioButtonTest.this, msgString, Toast.LENGTH_SHORT).show();
            }
        });

    }
}

代码解析:
这里我们为“选择性别”按钮绑定了setOnClickListener事件监听器,每次点击的话遍历一次,RadioGroup判断哪个按钮被选中我们可以通过下述方法获得RadioButton的相关信息!
getChildCount()获得按钮组中的单选按钮的数目;
getChindAt(i):根据索引获取我们的单选按钮
isChecked():判断按钮是否被选中;

当然,我这里是将选中的值的点击事件绑定在了非RadioButton的其他Button上,其实,你也可以绑定在RadioButton自身的监听器
这里写图片描述

就像这样:
这里写图片描述
这里写图片描述你选了”+radbtn.getText() , Toast.LENGTH_LONG).show();
}
});

这里写图片描述

(三)Checkbox(复选按钮)的基本用法与事件处理:
这里写图片描述

运行结果:
这里写图片描述
第一种方法:绑定OnClickListener()来实现
实现代码:

xml文件如下:

<?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:orientation="vertical" >

    <TextView 
        android:text="性别: "
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <RadioGroup android:id="@+id/sex"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <RadioButton 
            android:text="男"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
         <RadioButton 
            android:text="女"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </RadioGroup>

    <Button 
        android:id="@+id/SexId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="选择性别"/>

</LinearLayout>

java文件如下:

/**
 * CheckBox默认的情况下是未选中的状态,如果想修改这个默认值的话,
 * 可以将<checkbox>中的android:checked设置为true
 * 或者使用CheckBox.setChecked方法设置都可以实现复选的功能。
 * @author Eillot
 *
 */
public class CheckBoxTest extends Activity implements OnClickListener{

        private List<CheckBox> checkBoxs = new ArrayList<CheckBox>();

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            //setContentView(R.layout.check_box_test);
            String cString[] = new String[]{"你是谁","我是要成为架构师的男人","你什么时候才可以","我马上就会成为"};
            //动态加载布局
            LinearLayout linearLayout = (LinearLayout) getLayoutInflater().inflate(R.layout.check_box_test, null);
            //给指定的checkbox赋值
            for (int i = 0; i < cString.length; i++) {
                //先获得checkbox.xml的对象
                CheckBox checkBox = (CheckBox) getLayoutInflater().inflate(R.layout.checkbox, null);
                checkBoxs.add(checkBox);
                checkBoxs.get(i).setText(cString[i]);
                // 实现了在
                linearLayout.addView(checkBox,i);

            }
            setContentView(linearLayout);
            Button button = (Button) findViewById(R.id.ensurenbutton);
            button.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String s ="";
            for (CheckBox checkBox : checkBoxs) {
                    if (checkBox.isChecked()) {
                        s += checkBox.getText() + "\\n";
                    }
            }
            if (" ".equals(s)) {
                s = "你还没有选中项!!";

            }
            // 使用一个提示框来提示用户的信息
            new AlertDialog.Builder(this).setMessage(s)
            .setPositiveButton("关闭", null).show();
        }
}

第二种方法:绑定setOnCheckedChangedListener()来实现
xml文件就不贴了,太简单,java代码如下:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

(四)自定义点击效果
这里写图片描述
运行图片:
这里写图片描述
实现代码:
这里写图片描述
这里写图片描述
这里写图片描述
(五)改变字体跟选择框的相对位置
这里写图片描述
(六)修改文字跟选择框的距离
这里写图片描述
就像这样:
这里写图片描述

<完>

以上是关于UI控件之RadioButton(单选按钮)&Checkbox(复选按钮)的主要内容,如果未能解决你的问题,请参考以下文章

RadioButton(单选按钮)&Checkbox(复选框)

Android基础——基本UI控件:

[Tinkter 教程05] Radiobutton 控件

Android基础入门教程——2.3.5.RadioButton(单选按钮)&Checkbox(复选框)

Android之Dialog

Android Studio基础单选按钮RadioButton