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(复选框)