Android开发小点滴之selector、layer-list

xiaoxiao2021-02-28  128

简单给大家介绍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实现,希望大家喜欢也可以动手去设置.

转载请注明原文地址: https://www.6miu.com/read-65857.html

最新回复(0)