android之selector- 按钮之类的变色

开始我的小白变大神之路,先清光我笔记本上的笔记吧,提到博客来,锻炼自己的能力,先从简单的基础开始迁移。自己工作也就一年,技术也一般,只能写些自己会的,一步一步来。废话完了,开始正题吧。

我们看很多APP上面会有按钮,当你点击按钮的时候你会发现,你的手指按上去的时候它的背景色会变色,放开又变回原来的颜色了,或者字体颜色的改变,也可以是背景图片的变改变,一样的道理。刚毕业的时候我比较蠢吧,想到的办法是监听它的触摸事件,摸到它的时候在代码中动态设置它的背景颜色,放开的时候再重新设置。其实安卓上已经给我们安置好了。我们只需要使用selector就可以了。

到底什么是selector呢,其实说白了就是选择器,你什么状态的时候选择什么图片或者什么颜色。直接就是一个xml文件。如果是图片的改变一般放在drawable文件夹下面,当然如果是颜色的改变一般自己新建一个color文件夹,然后放里面就行,当然不是绝对的,你也可以直接放drawable下面,但是为了方便分类我个人建议放color里面。方法很简单,如下建立一个xml名为sel_color_for_had_want,所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/black" android:state_pressed="true"/>
    <item android:color="@color/tint_gray"/>
</selector>


然后我们在某个按钮的布局中这样引用,如果想改变的是字体颜色就设置它的textColor就行了:

android:background="@color/sel_color_for_had_want"

一个selector里面使用item来建立不同状态的不同颜色值或者图片背景。上面第一个item多一个android:state_pressed属性,这个属性的意思就是当手指放上去的时候按钮的背景色或者图片背景,我这里是用的颜色,其实也可以用图片,自己去试试就知道了。android:state_pressed= “true”就代表手指放上去时候的状态选择。而第二个item只有一个颜色值,代表的是除了自己写了的各种状态下的变换,其他状态都是用这个状态值(即默认颜色值或者图片)。


当然selector下不止android:state_pressed这一个状态,还有很多属性状态,我就说几个常用的:

android:state_selected,表示选中状态,这个是什么意思呢?就是说,比如我有三个按钮,A,B,C,点击A后屏幕显示跟A相关的内容,B、C同理,此时我点击了B,就显示了B相关的内容,但是如果A.B.C颜色一样,不注意看内容我都不知道我现在是显示的谁的,所以我们给A.B.C三个都设置个selector_selected,当我点击B后,就将B的这个值设为true,A和C的设为false即可。这个属性需要动态设置,不像android:state_pressed不需要动态设置,动态设置只需要一行代码:x.setSelected(true)或者false。

还有android:state_focused,android:state_enabled等就不一一举例了。

发布了33 篇原创文章 · 获赞 49 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/gsw333/article/details/51851563