本文介绍RadioButton控件。下面的内容都是参考"RadioButton测试代码"进行的讲解,感兴趣的可以进行测试验证。
1. RadioButton基本使用
1.1 RadioButton的父类
下面是RadioButton的继承关系图
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button
↳ android.widget.CompoundButton
↳ android.widget.RadioButton
从中,可以看出Button和CompoundButton都是RadioButton父类。这也就意味着,RadioButton同时具有它们的特性。
1.2 RadioButton基本定义
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton android:id="@+id/radio_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:onClick="onRadioButtonClicked"
android:text="@string/one"/>
<RadioButton android:id="@+id/radio_two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onRadioButtonClicked"
android:text="@string/two"/>
<RadioButton android:id="@+id/radio_three"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onRadioButtonClicked"
android:text="@string/three"/>
</RadioGroup>
1.3 RadioButton事件的监听
RadioButton事件的监听,有两种方法:
第一种:实现View.OnClickListener接口。这个和监听Button的方式一样,它监听的是点击动作!
第二种:实现CompoundButton.OnCheckedChangeListener接口。这个和第一种方法的区别是,它是监听状态(监听按钮状态的变化),而第一种方法是监听动作(监听按钮的点击事件)。
具体的实现如下:
public class RadioTest extends Activity {
private TextView mView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mView = (TextView) findViewById(R.id.tv_intro);
RadioButton mTwo = (RadioButton) findViewById(R.id.radio_two);
mTwo.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
mView.setText("two checked!");
} else {
mView.setText("two un-checked!");
}
}
});
}
public void onRadioButtonClicked(View view) {
boolean checked = ((RadioButton) view).isChecked();
switch(view.getId()) {
case R.id.radio_one:
Toast.makeText(this, "one checked="+checked, Toast.LENGTH_SHORT).show();
break;
case R.id.radio_two:
Toast.makeText(this, "two checked="+checked, Toast.LENGTH_SHORT).show();
break;
case R.id.radio_three:
Toast.makeText(this, "three checked="+checked, Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}