UI组件详解2
---- RadioGroup、RadioButton、CheckBox、ListView、Spinner
RadioGroup、RadioButton:
单选按钮是一种双状态的按钮,可以选择或不选中。在单选按钮没有被选中时,用户能够按下或点击来选中它。但是,与复选框相反,用户一旦选中就不能够取消选中(可以通过代码来控制,界面上点击的效果是一旦选中之后就不能取消选中了)。
多个单选按钮通常与RadioGroup同时使用。当一个单选组(RadioGroup)包含几个单选按钮时,选中其中一个的同时将取消其它选中的单选按钮。以下为我写的例子:
UITest3Activity代码:
packagecn.class3g.activity;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.widget.RadioButton;
importandroid.widget.RadioGroup;
importandroid.widget.RadioGroup.OnCheckedChangeListener;
public class UITest3Activity extends Activity implements OnCheckedChangeListener{
RadioGroup rg = null;
private static final String TAG = "TAG";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.radio_layout);
findViews();
rg.check(R.id.male);
int checkedId = rg.getCheckedRadioButtonId();
RadioButton rb = (RadioButton) this.findViewById(checkedId);
Log.i(TAG, rb.getText().toString());
}
private void findViews() {
rg = (RadioGroup) this.findViewById(R.id.sexRg);
//注册监听器
rg.setOnCheckedChangeListener(this);
}
//覆盖onCheckedChanged接口的抽象方法
public void onCheckedChanged(RadioGroup group, int checkedId) {
if(group.getId() == R.id.sexRg){
RadioButton rb = (RadioButton) this.findViewById(checkedId);
Log.i(TAG, rb.getText().toString());
}
}
}
radio_layout.xml代码如下:
"1.0"encoding="utf-8"?>
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="RadioDemo" /> android:id="@+id/sexRg" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:checkedButton="@+id/female"> android:id="@id/female" android:text="女"/> android:id="@+id/male" android:text="男"/> 效果如下: CheckBox: 概述 复选框是一种有双状态按钮的特殊类型,可以选中或者不选中。如下是一个在activity中使用复选框的例子: CheckBoxDemo代码: packagecn.class3g.activity; importjava.util.ArrayList; importandroid.app.Activity; importandroid.os.Bundle; importandroid.util.Log; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.widget.Button; importandroid.widget.CheckBox; importandroid.widget.CompoundButton; importandroid.widget.CompoundButton.OnCheckedChangeListener; public class CheckBoxDemo extendsActivity implements OnCheckedChangeListener{ private CheckBox cb1,cb2,cb3,cb4; Button submitBtn = null; private ArrayList protected voidonCreate(Bundle savedInstanceState) { setContentView(R.layout.checkbox_layout); super.onCreate(savedInstanceState); findViewS(); } private void findViewS() { cb1 = (CheckBox) this.findViewById(R.id.cb1); cb2 = (CheckBox) this.findViewById(R.id.cb2); cb3 = (CheckBox) this.findViewById(R.id.cb3); cb4 = (CheckBox) this.findViewById(R.id.cb4); list.add(cb1); list.add(cb2); list.add(cb3); list.add(cb4); for(CheckBox cb : list){ //为什么参数是this /*当前类实现了监听器接口,所以当前类的实例this可以 * 当作一个监听器对象放入setOnCheckedChangeListener() * 方法之中做参数 * */ cb.setOnCheckedChangeListener(this); } submitBtn = (Button) this.findViewById(R.id.submitBtn); submitBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { String fav = ""; for(CheckBox cb : list){ if(cb.isChecked()){ fav += cb.getText() + ","; } } Log.i("TAG", fav); } }); } //onCheckedChanged覆盖接口的抽象方法 public void onCheckedChanged(CompoundButtonbuttonView, boolean isChecked) { Log.i("TAG",buttonView.getText().toString()); } } checkbox_layout.xml代码是: "1.0"encoding="utf-8"?> android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="爱好" android:textSize="20dp" /> android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="*" android:id="@+id/tableLayout" > android:id="@+id/cb1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="足球" /> android:id="@+id/cb2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="篮球" /> android:id="@+id/cb3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="游泳" /> android:id="@+id/cb4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="武术" />