当前位置: 代码迷 >> Android >> Android-RadioButton(单选按钮)详解
  详细解决方案

Android-RadioButton(单选按钮)详解

热度:227   发布时间:2016-05-01 14:04:27.0
Android---RadioButton(单选按钮)详解

?一: 单选按钮RadioButton在Android平台上也应用的非常多,比如一些选择项的时候,会用到单选按钮,实现单选按钮由两部分组成,也就是RadioButton和RadioGroup配合使用

?

??? RadioButton的单选按钮;

??? RadioGroup是单选组合框,用于将RadioButton框起来;

??? 在没有RadioGroup的情况下,RadioButton可以全部都选中;

??? 当多个RadioButton被RadioGroup包含的情况下,RadioButton只可以选择一个;

?

??? 注意:单选按钮的事件监听用setOnCheckedChangeListener来对单选按钮进行监听

??? 例子:一道选择题,选择哪个城市美女最多,当然,这个就是为了测试

package org.loulijun.radio;import android.app.Activity;import android.os.Bundle;import android.view.Gravity;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.TextView;import android.widget.Toast;public class RadioTest extends Activity {    /** Called when the activity is first created. */	TextView textview;	RadioGroup radiogroup;	RadioButton radio1,radio2,radio3,radio4;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        textview=(TextView)findViewById(R.id.textview1);        radiogroup=(RadioGroup)findViewById(R.id.radiogroup1);        radio1=(RadioButton)findViewById(R.id.radiobutton1);        radio2=(RadioButton)findViewById(R.id.radiobutton2);        radio3=(RadioButton)findViewById(R.id.radiobutton3);        radio4=(RadioButton)findViewById(R.id.radiobutton4);                radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {						@Override			public void onCheckedChanged(RadioGroup group, int checkedId) {				// TODO Auto-generated method stub				if(checkedId==radio2.getId())				{					DisplayToast("正确答案:"+radio2.getText()+",恭喜你,回答正确!");				}else				{					DisplayToast("请注意,回答错误!");				}			}		});    }    public void DisplayToast(String str)    {    	Toast toast=Toast.makeText(this, str, Toast.LENGTH_LONG);    	toast.setGravity(Gravity.TOP,0,220);    	toast.show();    }}

?

strings.xml文件

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="hello">哪个城市美女多?</string>    <string name="app_name">单选按钮测试</string>    <string name="radiobutton1">杭州</string>    <string name="radiobutton2">成都</string>    <string name="radiobutton3">重庆</string>    <string name="radiobutton4">苏州</string></resources>

?main.xml文件:注意,这里面,4个RadioButton包含在RadioGroup中

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><TextView      android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="@string/hello"    android:id="@+id/textview1"    />    <RadioGroup    	android:id="@+id/radiogroup1"    	android:layout_width="wrap_content"    	android:layout_height="wrap_content"    	android:orientation="vertical"    	android:layout_x="3px"    >    	<RadioButton    		android:id="@+id/radiobutton1"    		android:layout_width="wrap_content"    		android:layout_height="wrap_content"    		android:text="@string/radiobutton1"    	/>    	<RadioButton    		android:id="@+id/radiobutton2"    		android:layout_width="wrap_content"    		android:layout_height="wrap_content"    		android:text="@string/radiobutton2"    	/>    	<RadioButton    		android:id="@+id/radiobutton3"    		android:layout_width="wrap_content"    		android:layout_height="wrap_content"    		android:text="@string/radiobutton3"    	/>    	<RadioButton    		android:id="@+id/radiobutton4"    		android:layout_width="wrap_content"    		android:layout_height="wrap_content"    		android:text="@string/radiobutton4"    	/>    </RadioGroup></LinearLayout>

?

?运行结果如下:

?

二:Android 自定义RadioButton的样式(和上面关系不大

??? 我们知道Android控件里的button,listview可以用xml的样式自定义成自己希望的漂亮样式。

最近用到RadioButton,利用xml修改android:background="@drawable/button_drawable",其中button_drawable为自己定义的.xml文件(res/drawable文件下),但是不成功,到网上查找,也没有正确的说法,我就开始自己尝试,最后做好了。

其实方法很简单,同样在res/drawable新建radiobutton.xml如下

?

<selector xmlns:android="http://schemas.android.com/apk/res/android">        <item              android:state_enabled="true"             android:state_checked="true"            android:drawable="@drawable/check" />        <item                          android:state_enabled="true"                 android:state_checked="false"            android:drawable="@drawable/checknull" />    </selector> 

?

check和checknull分别为选中和位选中的图片。
?
1然后在你的布局文件中,RadioButton 布局
?
1设置android:button = "@drawable/radiobutton",就可以了!

?前后图片对比如下:

?radio前radio后

?

  相关解决方案