layer-list,就是多个drawable按照顺序层叠在一起显示,顺序规则 按照layer-list 的 item 从上至下的顺序,进行层叠,每个item 就是 一层drawable。
每个item属性的 left top right bottom 是用来控制每层Drawable展示大小与位置的(类似View的margin效果),如果不设置此属性,最上层的Drawable会完全覆盖下层的展示,故 通过控制每个item的外间距,各层组合展示 ,来实现想要的效果。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<layer-list>
<item android:bottom="@dimen/selector_btn_radio_solid_margin" android:left="@dimen/selector_btn_radio_solid_margin" android:right="@dimen/selector_btn_radio_solid_margin" android:top="@dimen/selector_btn_radio_solid_margin">
<shape android:shape="oval">
<size android:width="@dimen/selector_btn_radio_size" android:height="@dimen/selector_btn_radio_size" />
<solid android:color="@color/main_color" />
</shape>
</item>
<item android:bottom="@dimen/selector_btn_radio_stroke_margin" android:left="@dimen/selector_btn_radio_stroke_margin" android:right="@dimen/selector_btn_radio_stroke_margin" android:top="@dimen/selector_btn_radio_stroke_margin">
<shape android:shape="oval">
<stroke android:width="1dp" android:color="@color/color_333333" />
<size android:width="@dimen/selector_btn_radio_size" android:height="@dimen/selector_btn_radio_size" />
</shape>
</item>
</layer-list>
</item>
<item>
<layer-list>
<item android:bottom="@dimen/selector_btn_radio_solid_margin" android:left="@dimen/selector_btn_radio_solid_margin" android:right="@dimen/selector_btn_radio_solid_margin" android:top="@dimen/selector_btn_radio_solid_margin">
<shape android:shape="oval">
<size android:width="@dimen/selector_btn_radio_size" android:height="@dimen/selector_btn_radio_size" />
<solid android:color="@color/line" />
</shape>
</item>
<item android:bottom="@dimen/selector_btn_radio_stroke_margin" android:left="@dimen/selector_btn_radio_stroke_margin" android:right="@dimen/selector_btn_radio_stroke_margin" android:top="@dimen/selector_btn_radio_stroke_margin">
<shape android:shape="oval">
<stroke android:width="1dp" android:color="@color/line" />
<size android:width="@dimen/selector_btn_radio_size" android:height="@dimen/selector_btn_radio_size" />
</shape>
</item>
</layer-list>
</item>
</selector>
<dimen name="selector_btn_radio_stroke_margin">2dp</dimen>
<dimen name="selector_btn_radio_solid_margin">7dp</dimen>
<dimen name="selector_btn_radio_size">10dp</dimen>
样式效果参考 2017-09-01-RadioButton 的效果图
网友评论