先看一下图:
上面这种3选1的效果如何做呢?用代码写?
其实有更简单的办法,忘了RadioButton有什么特性了吗?
我就用RadioButton实现了如上效果,其实很简单的。
首先定义一张background,命名为radio.xml,注意该background必须为xml样式的图片:
这里我们只要关心state_checked状态就可以了。所以很简单的配置。
接下来就是布局文件里面引用这张图片了:
注意将android:button="@null"全部设为null,并且将android:background="@drawable/radio"设为刚才新建的图片。这样就完成了。
一句代码都不用写!
看看竖下来的效果:
傍边有图标的怎么办?
也很简单啦,只要在每个RadioButton上加android:drawableLeft="@drawable/tubiao_0"就可以了。
另外要设置图标与文字的距离怎么办?
有一个方法setCompoundDrawablePaddi ng(pad)可以设置图标与文字的距离,对应的属性为android:drawablePadding。
有了这招完全可以实现类似的n选1效果,看下面:
![自定义RadioButton样式,实现菜单 自定义RadioButton样式,实现菜单](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
上面这种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样式,实现菜单 自定义RadioButton样式,实现菜单](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
傍边有图标的怎么办?
![自定义RadioButton样式,实现菜单 自定义RadioButton样式,实现菜单](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
也很简单啦,只要在每个RadioButton上加android:drawableLeft="@drawable/tubiao_0"就可以了。
另外要设置图标与文字的距离怎么办?
有一个方法setCompoundDrawablePaddi
有了这招完全可以实现类似的n选1效果,看下面:
![自定义RadioButton样式,实现菜单 自定义RadioButton样式,实现菜单](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
![自定义RadioButton样式,实现菜单 自定义RadioButton样式,实现菜单](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)