Android颜色选择器介绍
使用Android的颜色选择器可以让我们的view在不同状态下显示不同的颜色。
1、Android中ListView 选择某项改变该行字体颜色
2、文件位置
res/color/filename.xml,文件名被做资源的ID
3、语法示例
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:color="@color/white" /> <item android:state_focused="true" android:color="@color/white" /> <item android:state_pressed="true" android:color="@color/white" /> <item android:state_enabled="true" android:color="@color/black"/> <item android:state_enabled="false" android:color="@color/white"/> <item android:state_window_focused="false" android:color="@color/black"/> <item android:color="@color/black" /> </selector>
4、属性
android:color
十六进制颜色,必须的。颜色是用RGB值来指定的,并且可选择alpha通道。
这个值始终是用#字符开头,后面跟的是Appha-Red-Green-Blue信息,格式如下:
#RGB
#ARGB
#RRGGBB
#AARRGGBB
android:state_pressed
一个布尔值,如果这个项目是在对象被按下时使用,那么就要设置为true。(如,按钮被触摸或点击时。)false应该用于默认的非按下状态。
android:state_focused
一个布尔值,如果这个项目是在对象获取焦点时使用,那么就要设置为true。如,一个选项标签被打开时。如果这个项目要用于对象没有被被选择的时候,那么就要设置为false。
android:state_checkable
一个布尔值,如果这个项目要用于对象的可选择状态,那么就要设置为true。如果这个项目要用于不可选状态,那么就要设置为false。(它只用于一个对象在可选和不可选之间的转换)。
android:state_checked
一个布尔值,如果这个项目要用于对象被勾选的时候,那么就要设置为true。否者设为false。
android:state_enabled
一个布尔值,如果这个项目要用于对象可用状态(接受触摸或点击事件的能力),那么就要设置为true,否者设置为false。
android:state_window_focused
一个布尔值,如果这个项目要用于应用程序窗口的有焦点状态(应用程序是在前台),那么就要设置为true,否者设置false。
5、注意
A:要记住,状态列表中一个与对象当前状态匹配的项目会被使用。因此,如果列表中的第一项没有包含以上任何一种状态属性,那么每次都会使用这个项目,因此默认设置应该始终被放到最后。
B:如果出现失去焦点,背景色延迟的情况,不要使用magin。
C:drawable下的selector可是设置状态背景列表(可以让view的背景在不同状态时变化)说明:也可以定义状态背景列表,但是是定义在drawable文件夹下,用的不是color属性,而是drawable属性。
我们可以使用selector来实现Button的特效,如图所示:
默认情况
获得焦点的时候
点击按钮
main.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="按下或者获得焦点Button会变不同颜色"
<SPAN style="COLOR: #ff0000">android:textColor="@color/button_text" </SPAN>/>
</LinearLayout>
www.2cto.com
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="按下或者获得焦点Button会变不同颜色"
android:textColor="@color/button_text" />
</LinearLayout>
XML 文件保存在res/color/button_text.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:color="#ffff0000"/> <!-- pressed -->
<item android:state_focused="true" android:color="#ff0000ff"/> <!-- focused -->
<item android:color="#ff000000"/> <!-- default -->
</selector>
目标:选中item,其字体设置为#3197FF,未选中的,其字体为#FFFFFF。其效果图如下:
与listvew设置选中行item背景图片一样,使用selector,不过这里的颜色设置,应该是在listview中的textview中设置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
TableLayout
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
>
<
TableRow
>
<
TextView
android:id
=
"@+id/name_tv"
android:layout_height
=
"wrap_content"
android:layout_width
=
"wrap_content"
android:textSize
=
"25px"
android:textColor
=
"@drawable/itemcolor"
>
</
TextView
>
</
TableRow
>
</
TableLayout
>
|
同样,定义itemcolor.xml文件,修改选中行的字体颜色:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<!-- 没有焦点时字体颜色 -->
<
item
android:state_selected
=
"false"
android:color
=
"#FFFFFF"
/>
<!--选中时的字体颜色 -->
<
item
android:state_selected
=
"true"
android:color
=
"#3197FF"
/>
<!-- 非触摸模式下获得焦点并单击时的字体颜色 -->
<
item
android:state_focused
=
"true"
android:state_pressed
=
"true"
android:color
=
"#3197FF"
/>
</
selector
>
|