您的位置:首页 > 移动开发 > Android开发

Android中的Selector

2015-08-15 18:31 513 查看
Color State List Resource

1. ColorSelector, 放在color资源目录

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android" >

    <item

        android:color="#RGB或#ARGB, #RRGGBB #AARRGGBB"

        android:state_pressed=["true" | "false"]                                   // 按钮按下时

        android:state_focused=["true" | "false"]                                   // 获得焦点时(高亮)

        android:state_selected=["true" | "false"]                                  // 被选中时

        android:state_checkable=["true" | "false"]                               // checkable

        android:state_checked=["true" | "false"]                                  // checked

        android:state_enabled=["true" | "false"]                                  // 激活,可使用时

        android:state_window_focused=["true" | "false"] />              // 窗口获得焦点时

</selector>

例子:

注意item里越普遍的要越放后面

<?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>

<Button

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/button_text"

    android:textColor="@color/button_text" />

2. Drawable有同样的selector,放在drawable资源目录

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android"

    android:constantSize=["true" | "false"]

    android:dither=["true" | "false"]

    android:variablePadding=["true" | "false"] >

    <item

        android:drawable="@[package:]drawable/drawable_resource"

        android:state_pressed=["true" | "false"]

        android:state_focused=["true" | "false"]

        android:state_hovered=["true" | "false"]

        android:state_selected=["true" | "false"]

        android:state_checkable=["true" | "false"]

        android:state_checked=["true" | "false"]

        android:state_enabled=["true" | "false"]

        android:state_activated=["true" | "false"]

        android:state_window_focused=["true" | "false"] />

</selector>

例子:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true"

          android:drawable="@drawable/button_pressed" /> <!-- pressed -->

    <item android:state_focused="true"

          android:drawable="@drawable/button_focused" /> <!-- focused -->

    <item android:state_hovered="true"

          android:drawable="@drawable/button_focused" /> <!-- hovered -->

    <item android:drawable="@drawable/button_normal" /> <!-- default -->

</selector>

<Button

    android:layout_height="wrap_content"

    android:layout_width="wrap_content"

    android:background="@drawable/button" />

又如对listView

<?xml version="1.0" encoding="utf-8" ?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<!-- 默认时的背景图片-->

    <item android:drawable="@drawable/pic1" />

<!-- 没有焦点时的背景图片 -->

    <item android:state_window_focused="false"

                android:drawable="@drawable/pic1" />

<!-- 非触摸模式下获得焦点并单击时的背景图片 -->

    <item android:state_focused="true"

                android:state_pressed="true"

                android:drawable= "@drawable/pic2" />

<!-- 触摸模式下单击时的背景图片-->

    <item android:state_focused="false"

                android:state_pressed="true"

                android:drawable="@drawable/pic3" />

<!--选中时的图片背景-->

    <item android:state_selected="true"

                android:drawable="@drawable/pic4" />

<!--获得焦点时的图片背景-->

    <item android:state_focused="true"

                android:drawable="@drawable/pic5" />

</selector>

在listview中配置android:listSelector="@drawable/xxx"

或者在listview的item中添加属性android:background="@drawable/xxx"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: