在Drawable文件夹下建立xml文件
- 只有背景色和形状
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:bottomLeftRadius="6dp"
android:bottomRightRadius="6dp"
android:topLeftRadius="6dp"
android:topRightRadius="6dp"/>
<solid android:color="@color/roud_solid_white"/>
<stroke android:width="1px" android:color="@color/roud_stroke_white"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/outer_bg_border_ltrb" android:state_pressed="false"/>
<item android:drawable="@drawable/outer_bg_border_ltrb_press" android:state_pressed="true"/>
</selector>
---------------------正常状态下(边框+主题背景)-------------------
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 边框颜色值 -->
<item>
<shape>
<solid android:color="@color/black_d9" />
<corners android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"/>
</shape>
</item>
<!-- 主体背景颜色值 -->
<item android:top="1px" android:left="1px" android:right="1px" android:bottom="1px">
<shape>
<solid android:color="@color/white"/>
<corners android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"/>
</shape>
</item>
</layer-list>
---------------------点击状态下(边框+主题背景)-------------------
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 边框颜色值 -->
<item>
<shape>
<solid android:color="@color/black_d9" />
<corners android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"/>
</shape>
</item>
<!-- 主体背景颜色值 -->
<item android:top="1px" android:left="1px" android:right="1px" android:bottom="1px">
<shape>
<solid android:color="@color/white_f2"/>
<corners android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"/>
</shape>
</item>
</layer-list>
第二种方式:只有颜色变化,在String.xml里写
--string.xml----
<!-- 批量处理按钮 -->
<drawable name="batch_process_normal">#228fea</drawable>
<drawable name="batch_process_pressed">#1d79c4</drawable>
将点击和正常态设置在同一个文件(layer-list作为根节点)
对于layer-list标签,从这里也可以看出来:它的绘制是==逐层绘制==的,层与层之间是没有任何影响的,每一层可以单独设置selector标签来响应不同的用户操作状态。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<corners android:radius="25dp" />
<solid android:color="#E4E4E4" />
</shape>
</item>
<item
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp">
<selector>
<item android:state_pressed="true">
<shape>
<corners android:radius="25dp" />
<solid android:color="#FFFF00" />
</shape>
</item>
<item>
<shape>
<corners android:radius="25dp" />
<solid android:color="#00ff00" />
</shape>
</item>
</selector>
</item>
</layer-list>
将selector作为根节点
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item>
<shape>
<corners android:radius="25dp"/>
<solid android:color="#E4E4E4"/>
</shape>
</item>
<item android:left="2dp" android:top="2dp"
android:bottom="2dp" android:right="2dp">
<shape>
<corners android:radius="25dp"/>
<solid android:color="#FFFF00"/>
</shape>
</item>
</layer-list>
</item>
<item>
<layer-list>
<item>
<shape>
<corners android:radius="25dp"/>
<solid android:color="#E4E4E4"/>
</shape>
</item>
<item android:left="2dp" android:top="2dp"
android:bottom="2dp" android:right="2dp">
<shape>
<corners android:radius="25dp"/>
<solid android:color="#FFFFFF"/>
</shape>
</item>
</layer-list>
</item>
</selector>
网友评论