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后

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值