RadioButton和CheckBox的不同之处在于,RadioButton只能选中其中一个,因此RadioButton通常要与RadioGroup一起使用,用于定义一组单选按钮。
RadioButton和CheckBox的用法
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TableRow > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="性别" android:textSize="11pt"/> <!-- 定义一 组单选按钮 --> <RadioGroup android:id="@+id/radioGroup" android:orientation="vertical" android:layout_gravity="center_horizontal"> <!-- 定义两个单选按钮 --> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="男"/> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="女"/> </RadioGroup> </TableRow> <TableRow > <TextView android:id="@+id/tvSex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="您的性別是:" android:textSize="11pt"/> </TableRow> <TableRow > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="喜欢的颜色" android:textSize="11pt"/> <!-- 定义一个垂直的线性布局 --> <LinearLayout android:layout_gravity="center_horizontal" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <!-- 定义三个复选框 --> <CheckBox android:id="@+id/red" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="红色" android:checked="true"/> <CheckBox android:id="@+id/blue" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="蓝色"/> <CheckBox android:id="@+id/green" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="绿色"/> </LinearLayout> </TableRow> <TableRow > <Button android:id="@+id/get_view_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获取CheckBox的值" /> </TableRow> </TableLayout>
上面布局中定义了一组单选按钮和一组复选框
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.TextView; public class RadioButtonActivity extends Activity { TextView tv = null;// 根据不同选项所要变更的文本控件 CheckBox plain_cb; CheckBox serif_cb; CheckBox italic_cb; CheckBox bold_cb; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.radiobutton); setTitle("RadioButtonActivity"); setContentView(R.layout.radiobutton); find_and_modify_text_view(); // 根据ID找到该文本控件 tv = (TextView) this.findViewById(R.id.tvSex); // 根据ID找到RadioGroup实例 RadioGroup group = (RadioGroup) this.findViewById(R.id.radioGroup); // 绑定一个匿名监听器 group.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup arg0, int arg1) { // TODO Auto-generated method stub // 获取变更后的选中项的ID int radioButtonId = arg0.getCheckedRadioButtonId(); // 根据ID获取RadioButton的实例 RadioButton rb = (RadioButton) RadioButtonActivity.this .findViewById(radioButtonId); // 更新文本内容,以符合选中项 tv.setText("您的性别是:" + rb.getText()); } }); } public void find_and_modify_text_view() { plain_cb = (CheckBox) findViewById(R.id.red); serif_cb = (CheckBox) findViewById(R.id.blue); italic_cb = (CheckBox) findViewById(R.id.green); Button get_view_button = (Button) findViewById(R.id.get_view_button); get_view_button.setOnClickListener(get_view_button_listener); } public Button.OnClickListener get_view_button_listener = new Button.OnClickListener() { public void onClick(View v) { String r = ""; if (plain_cb.isChecked()) { r = r + "," + plain_cb.getText(); } if (serif_cb.isChecked()) { r = r + "," + serif_cb.getText(); } if (italic_cb.isChecked()) { r = r + "," + italic_cb.getText(); } setTitle("Checked: " + r); } }; }