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