android selector

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。其效果图如下:

bg

与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
     xmlns:android = "http://schemas.android.com/apk/res/android"   
     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"  ?>
< selector  xmlns:android = "http://schemas.android.com/apk/res/android"
<!-- 没有焦点时字体颜色 -->
< 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 >

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值