0
点赞
收藏
分享

微信扫一扫

Android 系列 6.12使用复选框和RadioButton


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" >
<CheckBox
android:id="@+id/cbxBox1"
android:layout_width="32dp"
android:layout_height="32dp"
android:checked="false" />
<TextView
android:id="@+id/txtCheckBox"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="CheckBox: Not checked" />
<RadioGroup
android:id="@+id/rgGroup1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RadioButton
android:id="@+id/RB1"
android:text="Button1" />
<RadioButton
android:id="@+id/RB2"
android:text="Button2" />
<RadioButton
android:id="@+id/RB3"
android:text="Button3" />

</RadioGroup>
<TextView
android: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. */
@Override
public 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 CheckBox
checkBox.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 RadioGroup
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton rb = (RadioButton) findViewById(rg.getCheckedRadioButtonId());
txtRadio.setText(rb.getText() + " picked");
}
});
txtRadio = (TextView) findViewById(R.id.txtRadio);
}
@Override
public 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 条评论