您的位置:首页 > Web前端 > CSS

自定义RadioButton样式,实现菜单

2014-04-18 11:59 309 查看
先看一下图: 


 

上面这种3选1的效果如何做呢?用代码写? 

其实有更简单的办法,忘了RadioButton有什么特性了吗? 

我就用RadioButton实现了如上效果,其实很简单的。 

首先定义一张background,命名为radio.xml,注意该background必须为xml样式的图片: 

Xml代码  " wmode="transparent"> 


<?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状态就可以了。所以很简单的配置。 

接下来就是布局文件里面引用这张图片了: 

Java代码  "
wmode="transparent"> 


<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效果,看下面: 


 


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: