简单给大家介绍selector与layer-list
先看selector (背景选择器)
一. 用法:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#cccccc"></item>
<item android:color="@color/white"></item>
</selector>
selector只有一个子元素item,我们定义两种类型的item,一种状态为按下时,我们把颜色设置为浅灰色,否则使用另一个item的白色颜色.
运用场景:可点击的按钮,点击时改变颜色.同理,可应用到资源图片,如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/back_pressed" android:state_pressed="true"></item>
<item android:drawable="@drawable/back"></item>
</selector>
二. selector
通过一可以实现简单的点击改变颜色和图片,同时,如果我们还需要改变按钮的背景颜色,边框颜色,改变为圆角,如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"><shape android:shape="rectangle">
<corners android:radius="4dp" />
<solid android:color="#dddddd" />
<padding android:bottom="4dp" android:left="4dp" android:right="4dp" android:top="4dp" />
</shape></item>
<item android:state_pressed="false"><shape android:shape="rectangle">
<stroke android:width="2dp" android:color="#cccccc" />
<solid android:color="#FFFFFFFF" />
<corners android:radius="4dp" />
<padding android:bottom="4dp" android:left="4dp" android:right="4dp" android:top="4dp" />
</shape></item>
</selector>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false"><shape>
<corners android:radius="4dp" />
<solid android:color="@color/main_color" />
</shape></item>
<item android:state_pressed="true"><shape>
<corners android:radius="4dp" />
<solid android:color="@color/main_color_deepened" />
</shape></item>
</selector>
上面,我们还是定义两种item,但在item里面增加了一些属性,如corners属性,使之变为圆角,也可设置padding,使之更美观.
三. layer-list
item中常用layer-list标签
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<layer-list>
<item android:left="-4dp" android:right="-4dp" android:top="-4dp">
<shape android:shape="rectangle">
<stroke android:width="4dp" android:color="@color/book_area_golden_background" />
<solid android:color="@color/white"/>
</shape>
</item>
</layer-list>
</item>
<item android:state_selected="false"><shape android:shape="rectangle"></shape></item>
</selector>
此外:还需要设置代码,在按钮监听时,设置其按钮为选中状态.button.setSelected(true);
效果为选择时下方有带颜色的下划线,默认什么效果也没有.
如需设置上下左右边框都有带颜色,可将ltem标签中上下左右设置dp删除.
效果图为
这个主要看大家要实现的效果,万变不离其宗,再复杂的效果也通过selector实现,希望大家喜欢也可以动手去设置.