如何为按钮设置一组不同状态的颜色

  之前在开发的过程中遇到一个问题:如何为一个按钮或者view对象在被点击或者不可点击或者被按下的时候显示不同的状态,后来了解到有一个资源类型:<selector>,可以用来定义基于控件的状态而显示不同的颜色或者图案。
  比如说我们可以定义一个Button,当它被禁用的时候显示为灰色,被启用的时候为绿色,当被按下的时候显示为黄色。当有了selector元素之后我们就可以在其下面定义多个itme子元素来规定我们的属性,我么可以看一下下面表的一些属性:

颜色状态列表<item>元素的属性
属性 解释
color 指定下列各式之一的一个十六进制颜色必须属性:#RGB,#ARGB,#RRGGBB,#ARRGGBB。
state_enabled 布尔类型,决定该对象是否能接收触碰或点击事件,值为:true或者false。
state_checked 布尔类型,决定该对象是否被选中,值为:true或者false。
state_checkable 布尔类型,决定该对象是否可以被选中,值为:true或者false。
state_selected 布尔类型,决定该对象是否选择,值为:true或者false。
state_focused 布尔类型,决定该对象是否获取焦点,值为:true或者false。
state_pressed 布尔类型,决定该对象是否按下,值为:true或者false。

 

 

 

 

 

 

 

 

 

 

 

 

  

  那要如何使用呢?接下来举一个例子:

  我们在res/color下新建一个xml文件,命名为textcolor.xml,内容应为为这样的:

 1 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 2     
 3     <item 
 4         android:state_enabled="true"
 5         android:color="#FF00FF"
 6         />
 7     
 8     <item 
 9         android:state_pressed="true"
10         android:color="00FF00"
11         />
12     <item 
13         android:state_focused="true"
14         android:color="#FF0000"
15         />
16     <item 
17         android:color="#000000"
18         />
19     
20 </selector>

  接着我们在main_activity.xml中定义一个Button,Button可以这样写:

 <Button 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="HelloWorld"
        android:textColor="@color/textcolor"
        />

  这样就可以将Button应用为我们所需要的属性了。其实是挺简单的,不过我们一开始如果没有学到selector的时候就会在java文件中写大量的无用代码,这也是可以减轻代码量的一个小技巧。

BOB

持续更新中……

 

posted @ 2016-08-14 14:25  温斯渤  阅读(3099)  评论(0编辑  收藏  举报