radiogroup控件是一组单选框的控件,也就是在radiogroup中的radiobutton才是真正的选择对象。当然一个radiogroup中只能有一个框被选择,所以我们在处理选择事件的时候不是针对某一个radiobutton,这与checkbox有很大的不同。
先来看效果图:
再看一看布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RadioGroup
android:id="@+id/u_rp"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="20dip"
>
<RadioButton
android:id="@+id/u_rb1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="rb1"
android:paddingLeft="200dip"
android:background="#00BFFF"
/>
<RadioButton
android:id="@+id/u_rb2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="rb2"
android:paddingLeft="200dip"
android:background="#00BFFF"
android:layout_marginTop="10dip"
/>
<RadioButton
android:id="@+id/u_rb3"
android:paddingLeft="200dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="rb3"
android:background="#00BFFF"
android:layout_marginTop="10dip"
/>
</RadioGroup>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/u_tv1"
android:gravity="center_horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20dip"
android:layout_marginTop="30dip"
android:textColor="#0000CD"
/>
</LinearLayout>
</LinearLayout>
很明显布局中只有一个radiogroup,并且里面有3个radiobutton。请注意radiobutton本身也是button,所以可以设置button样式,如果不设置此项那么会得到默认的按钮样式(如效果图)。
那么来看一看代码:
package com.example.testradiogroup;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
public class MainActivity extends Activity {
private RadioGroup rgp=null;
private RadioButton rb1=null;
private RadioButton rb2=null;
private RadioButton rb3=null;
private TextView tv1=null;
private RadioButton rb=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user);
rgp=(RadioGroup)findViewById(R.id.u_rp);
rb1=(RadioButton)findViewById(R.id.u_rb1);
rb2=(RadioButton)findViewById(R.id.u_rb2);
rb3=(RadioButton)findViewById(R.id.u_rb3);
tv1=(TextView)findViewById(R.id.u_tv1);
rgp.setOnCheckedChangeListener(new OnCheckedChangeListener() {//注意此处操作按钮选择的对象时radiogroup而不是radiobutton,这一点与checkbox有很大的不同。
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
rb=(RadioButton) findViewById(checkedId);
tv1.setText(rb.getText().toString()+"被选中了!");
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}