首页 > 代码库 > Android 自定义RadioButton样式

Android 自定义RadioButton样式

技术分享 
上面这种3选1的效果如何做呢?用代码写? 
其实有更简单的办法,忘了RadioButton有什么特性了吗? 
我就用RadioButton实现了如上效果,其实很简单的。 
首先定义一张background,命名为radio.xml,注意该background必须为xml样式的图片: 

<?xml version="1.0" encoding="utf-8"?>   <selector xmlns:android="http://schemas.android.com/apk/res/android">       <item       android:state_checked="false"       android:drawable="@drawable/tabswitcher_long" />       <item       android:state_checked="true"       android:drawable="@drawable/tabswitcher_short" />   </selector>   

这里我们只要关心state_checked状态就可以了。所以很简单的配置。 
接下来就是布局文件里面引用这张图片了:

<RadioGroup          android:gravity="center"          android:orientation="horizontal"            android:layout_width="fill_parent"             android:layout_height="wrap_content"          >          <RadioButton                 android:id="@+id/btn_0"                android:layout_width="fill_parent"                 android:layout_height="wrap_content"              android:text="最新信息"               android:textSize="17.0sp"                 android:textColor="@android:color/black"                android:gravity="center"               android:layout_weight="1"              android:checked="true"              android:button="@null"              android:background="@drawable/radio"              />            <RadioButton                 android:id="@+id/btn_1"              android:layout_width="fill_parent"                 android:layout_height="wrap_content"              android:text="在线专家"              android:textSize="17.0sp"              android:textColor="@android:color/black"                android:gravity="center"              android:layout_weight="1"              android:button="@null"              android:background="@drawable/radio"              />            <RadioButton                 android:id="@+id/btn_2"              android:layout_width="fill_parent"                 android:layout_height="wrap_content"              android:text="预约服务"              android:textSize="17.0sp"              android:textColor="@android:color/black"                android:gravity="center"              android:layout_weight="1"              android:button="@null"              android:background="@drawable/radio"              />        </RadioGroup>  

注意将android:button="@null"全部设为null,并且将android:background="@drawable/radio"设为刚才新建的图片。这样就完成了。 
一句代码都不用写! 
看看竖下来的效果: 
技术分享 
傍边有图标的怎么办? 
技术分享 
也很简单啦,只要在每个RadioButton上加android:drawableLeft="@drawable/tubiao_0"就可以了。 
另外要设置图标与文字的距离怎么办? 
有一个方法setCompoundDrawablePadding(pad)可以设置图标与文字的距离,对应的属性为android:drawablePadding。 
有了这招完全可以实现类似的n选1效果,看下面: 
技术分享 
技术分享 
应用: 
http://www.iteye.com/topic/1116261#2256664 

Android 自定义RadioButton样式