Android 系列 6.12使用复选框和RadioButton

来源:互联网 发布:迅雷会员淘宝充值 编辑:程序博客网 时间:2024/06/14 03:54
6.12使用复选框和RadioButton
问题
您希望为用户提供一组比列表更受限制的选项。

根据需要使用复选框es或RadioButton。
讨论
您可能从其他用户界面熟悉这些视图。它们允许用户从多个选项中进行选择。当您想要为每个选项提供yes / no或true / false选项时,通常使用复选框。当一次只允许一个选项时,使用单选按钮。
Spinners类似于一些GUI框架中的组合框,并且包含在配方6.14中。 Android已经调整了这些熟悉的组件,使它们在触摸屏环境中更有用。图6-9显示了在Android应用程序上布局的三种类型的多项选择视图。


创建图6-9中屏幕的布局XML文件如下所示:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><CheckBoxandroid:id="@+id/cbxBox1"android:layout_width="32dp"android:layout_height="32dp"android:checked="false" /><TextViewandroid:id="@+id/txtCheckBox"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="CheckBox: Not checked" /><RadioGroupandroid:id="@+id/rgGroup1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical" ><RadioButtonandroid:id="@+id/RB1"android:text="Button1" /><RadioButtonandroid:id="@+id/RB2"android:text="Button2" /><RadioButtonandroid:id="@+id/RB3"android:text="Button3" /></RadioGroup><TextViewandroid:id="@+id/txtRadio"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="RadioGroup: Nothing picked" /></LinearLayout>

XML文件只是列出了我们想要的屏幕上的每个视图以及我们想要的属性。 RadioGroup也是一个ViewGroup,所以它可以包含相应的RadioButton视图
例6-19是响应用户点击的Java文件。
实例6-19。选择器示例

package com.androidcookbook.checkboxradiobutton;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.widget.CheckBox;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.TextView;public class SelectExample extends Activity {private CheckBox checkBox;private TextView txtCheckBox, txtRadio;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_select_example);checkBox = (CheckBox) findViewById(R.id.cbxBox1);txtCheckBox = (TextView) findViewById(R.id.txtCheckBox);// React to events from the CheckBoxcheckBox.setOnClickListener(new CheckBox.OnClickListener() {public void onClick(View v) {if (checkBox.isChecked()) {txtCheckBox.setText("CheckBox: Box is checked");} else {txtCheckBox.setText("CheckBox: Not checked");}}});final RadioGroup rg = (RadioGroup) findViewById(R.id.rgGroup1);// React to events from the RadioGrouprg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {RadioButton rb = (RadioButton) findViewById(rg.getCheckedRadioButtonId());txtRadio.setText(rb.getText() + " picked");}});txtRadio = (TextView) findViewById(R.id.txtRadio);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_select_example, menu);return true;}}


这些View的工作方式如下:
CheckBox
复选框视图负责将状态来回翻转,并在状态为true时显示复选标记,而不是false。所有你需要做的是创建一个OnClickListener来捕获点击事件,你可以添加任何你想要反应的代码。
RadioGroup
如前所述,RadioGroup View实际上是一个ViewGroup,它包含任意数量的RadioButton视图。用户一次只能选择一个按钮,您可以通过在组上设置RadioGroup.OnCheckedChangeListener或为每个RadioButton设置OnClickListener来捕获选择。
单选按钮
一个要放入RadioGroup的按钮;它显示其给定的文本以及一个圆圈以指示当前选择组中的哪个按钮。
总而言之,这些View允许您提供一小组选择,并让用户从提供的选择中选择一个或多个选项。
0 0
原创粉丝点击