RadioGroup仿iOS Segmented Control样式
2015-02-5 小文字
前言
代码获取
git clone https://github.com/avenwu/support.git
iOS中有一个Segmented Control组件,android中的RadioGroup与之类似,但是RadioGroup的默认样式不是很美观,但是只需要稍微调一下就可以长得和Segmented Control控件一样简洁优雅。
实现
直接写style文件当然是最快的,只需设置每个RadioButton的对其为居中,修改默认的android:button资源,然后加上背景、文字的selector。
style样式
背景selector
这些都没什么问题,但是比较零散,每次都需要写很多的xml及其样式,selector等,所以可以做一些简单的封装,暴露一些必要的属性用于自定义,比如边框线的宽度,背景色等。
简单封装
自定义RadioGroup,将必要的初始化配置在内部完成。
属性
定义需要暴露给外面的属性
现在需要写一个RadioGroup时只需要少量的的配置:
- app:tab_border_width=”1dp” 边线宽度
- app:tab_border_color=”@android:color/white” 边线颜色
- app:tab_items=”@array/demo_array” tabs字符串数组
- app:tab_radius=”5dp” 边框弧度
- app:tab_textSize=”16sp” 文本字号
- app:tab_textColor=”@color/radio_button_color_light_blue” 文本颜色selector
示例:
所以现在写RadioGroup就非常方便,只需要根据需求配置相应属性即可。比如实现文章开头的效果,可以这样:
颜色selector
tab数组
小结
完整代码可以再这里获取:
https://github.com/avenwu/support/blob/master/sample/src/main/java/com/avenwu/deepinandroid/StyledRadioButtonDemo.java