Android之selector选择器的使用

1、selector简介

  selector中文的意思选择器,在Android中常常用来作组件的背景,实现组件在不同状态下不同的背景颜色或图片的变换。使用十分方便。主要是用来改变ListView和Button控件的默认背景!

  相关属性简介:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize=["true" | "false"]//drawable的大小是否当中状态变化,true表示是变化,false表示不变换,默认为false
    android:dither=["true" | "false"]//当位图与屏幕的像素配置不一样时(例如,一个ARGB为8888的位图与RGB为555的屏幕)会自行递色(dither)。设置为false时不可递色。默认true
    android:variablePadding=["true" | "false"] >//内边距是否变化,默认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>

2、定义color和drawable的xml文件

  color文件

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#fff000"
        android:state_pressed="true"/>
    <item android:color="#ff00ff"
        android:state_focused="true"/>
    <item android:color="#ff0000"/>
</selector>

  drawable文件

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">
        <shape>
            <stroke android:width="1dp"
                android:color="#ff0000"/>
            <corners android:radius="@dimen/btn_rounded_corner_radius"/>
        </shape>
    </item>
    <item android:state_enabled="true">
        <shape>
            <solid android:color="#e2e2" />
            <stroke android:width="1dp" android:color="#eee222" />
            <corners android:radius="@dimen/btn_rounded_corner_radius"/>
        </shape>
    </item>

    <item>
        <shape>
            <solid android:color="@color/bbutton_danger" />
            <stroke android:width="1dp" android:color="#000000" />
            <corners android:radius="@dimen/btn_rounded_corner_radius"/>
        </shape>
    </item>
</selector>
        
效果图

原文地址:https://www.cnblogs.com/xianfeng-zhang/p/8073297.html