android 自定义RadioButton样式

http://gundumw100.iteye.com/blog/1146527

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

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状态就能够了。因此很简单的配置。 
接下来就是布局文件里面引用这张图片了: 
spa

Java代码  收藏代码code

<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 xml

相关文章
相关标签/搜索