学而实习之 不亦乐乎

Android:背景选择器用法

2021-09-18 22:39:31

一、简介

在开发应用中,很多情况下要设计listview或button控件的背景,如点击或者选中后,实现背景转换。而这些都是通过 Android 中的 selector 来实现的。

selector 可在drawable 下的 xml 文件中配置,通过配置,可以使系统运行时根据控件对象的状态使用相应的图片、文字等。

相关属性:
android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件
android:state_checkable 控件可勾选状态,可以为true或false
android:state_checked 控件勾选状态,可以为true或false

根据这些状态同样可以设置button的selector效果。也可以设置selector改变button中的文字状态。如下代码:

//使用selector设置字体颜色
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:color="#FF0000" />
    <item android:state_focused="true" android:color="#00FF00" />
    <item android:state_pressed="true" android:color="#0000FF" />
    <item android:color="#000000" />
</selector>

二、实例

1.在选择器中使用 shape 属性

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

            <!--填充色  -->
            <solid
                android:color="#ffffff" /> 

            <!-- 圆角 --> 
            <corners
                android:topRightRadius="10dp"    
                android:bottomLeftRadius="10dp"  
                android:topLeftRadius="10dp"   
                android:bottomRightRadius="10dp"   
                />
        </shape>
    </item>
    <item >
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <gradient 
                android:startColor="#55B4FE" 
                android:endColor="#3d8FFB"
                android:type="linear"/>
            <!-- 圆角  上下左右四个角 弧度--> 
            <corners
                android:topRightRadius="10dp"    
                android:bottomLeftRadius="10dp"  
                android:topLeftRadius="10dp"   
                android:bottomRightRadius="10dp"   
                />  
        </shape>
    </item>
</selector>

2.在选择器中引用现有的 shape 文件

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/shape_select" android:state_checked="true" />
    <item android:drawable="@drawable/shape_unselect" android:state_checked="false" />
</selector>