1、单选框
<!-- RadioGroup包裹的RadioButton的选中状态是互斥的 -->
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/btnMan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
android:checked="true"/>
<RadioButton
android:id="@+id/btnWoman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"/>
</RadioGroup>
2、获取单选框选中的值:
方法1、实时获取
/**
该方法会在单选框选中状态发生改变时自动触发
*/
RadioGroup radgroup = (RadioGroup) findViewById(R.id.radioGroup);
//为radioGroup设置一个监听器:setOnCheckedChanged()
radgroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton radbtn = (RadioButton) findViewById(checkedId);
Toast.makeText(getApplicationContext(), "按钮组值发生改变,你选了" + radbtn.getText(), Toast.LENGTH_LONG).show();
}
});
方法2、被其他事件触发获取
/**
该方法会在点击按钮时触发
*/
Button btnchange = (Button) findViewById(R.id.btnpost);
RadioGroup radgroup = (RadioGroup) findViewById(R.id.radioGroup);
btnchange.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < radgroup.getChildCount(); i++) {
RadioButton rd = (RadioButton) radgroup.getChildAt(i);
if (rd.isChecked()) {
Toast.makeText(getApplicationContext(), "点击提交按钮,获取你选择的是:" + rd.getText(), Toast.LENGTH_LONG).show();
break;
}
}
}
});
3、多选框 CheckBox
获取多选框的选中状态:
1、为每一个 CheckBox 设置 OnCheckedChangeListener
2、其他事件触发获取每一个多选框的状态(通过 isChecked() 方法)
4、自定义按钮图标
1、自定义一个根据选中状态改变的drawable文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="true"
android:state_checked="true"
android:drawable="@mipmap/ic_checkbox_checked"/>
<item
android:state_enabled="true"
android:state_checked="false"
android:drawable="@mipmap/ic_checkbox_normal" />
</selector>
2、设置到 RadioButton 或 CheckedBox 上
方式1:直接替换按钮的图标 android:button="@drawable/rad_btn_selctor" 但是该方式不能改变图标的大小
方式2:隐藏按钮图标,并显示DrawableLeft来替代。这样就可以使用Java代码更改图标的大小。也可以控制图标与文字之间的距离(drawablePadding)。
android:button="@null"
android:drawableLeft="@drawable/rad_btn_selctor"