android中selector的用法

来源:互联网 发布:高博软件技术学院 编辑:程序博客网 时间:2024/06/05 07:38

android中的selector一般是在drawable/xxx.xml中配置的。

selector一般用来设置Android中控件在不同情况下的背景图片及样式。

 

Selector中常用的状态:

android:state_selected:被选中
android:state_focused:获得焦点
android:state_pressed:被点击
android:state_enabled:是否响应点击等事件

 

例一:设置button的背景效果: btnbgstyle.xml

<?xmlversion="1.0"encoding="UTF-8"?>

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

 <!-- 设置按钮被选中时的图片背景 -->

<itemandroid:state_selected="true"  android:drawable="@drawable/raokl_btn_follow_clk"/>


  <!-- 设置按钮获得焦点时的图片背景 -->

<itemandroid:state_focused="true"  android:drawable="@drawable/raokl_btn_follow_clk"/>


<!-- 设置按钮被点击时的图片背景 -->

<itemandroid:state_pressed="true"  android:drawable="@drawable/raokl_btn_follow_clk"/>


<!-- 设置按钮不响应点击等各种事件时的图片背景 -->

<itemandroid:state_enabled="false"  android:drawable="@drawable/raokl_btn_follow_gray"/>


<!-- 设置按钮默认情况下的图片背景 -->

<itemandroid:drawable="@drawable/raokl_btn_follow"/>

</selector>

 ——————————————————————————

Xml文件配置好之后,需要添加到button中,如下:

  <Button 

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


 如果添加到ListView中则有以下方法:

1、在xml文件中的ListView中配置:android:listSelector="@drawable/list_item_bg"

2、在ListView中的item中添加:android:background=“@drawable/list_item_bg"

3、在代码中实现:

Drawable drawable = getResources().getDrawable(R.drawable.list_item_bg); 

ListView.setSelector(drawable);

如果按照以上方法配置后,列表出现为黑的情况,需要加上:

android:cacheColorHint="@android:color/transparent"使其透明。

 ——————————————————————————



例二:设置button的文字效果:drawable/button_font.xml

<?xmlversion="1.0"encoding="utf-8"?>

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

    <itemandroid:state_selected="true"android:color="#FFF"/>

    <itemandroid:state_focused="true"android:color="#FFF"/>

    <itemandroid:state_pressed="true"android:color="#FFF"/>

    <itemandroid:color="#000"/>

</selector>

 

例三:设置button的渐变效果:drawable/button_color.xml

<?xmlversion="1.0"encoding="utf-8"?>

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

    <itemandroid:state_pressed="true">

        <!— 设置点击按钮时的效果 -->

        <shape>

            <gradient android:startColor="#8600ff"/>

            <stroke android:width="2dp"android:color="#000000"/>

            <corners android:radius="5dp"/>

            <padding android:left="10dp"android:top="10dp"

                android:bottom="10dp"android:right="10dp"/>

        </shape>

    </item>

    <itemandroid:state_focused="true">

        <!--设置按钮获得焦点时的效果 -->

        <shape>

            <gradient android:startColor="#eac100"/>

            <stroke android:width="2dp"android:color="#333333"color="#ffffff"/>

            <corners android:radius="8dp"/>

            <padding android:left="10dp"android:top="10dp"

                android:bottom="10dp"android:right="10dp"/>

        </shape>

    </item>

</selector>


以上是用button作为例子,selector也可以设置其它控件的各种效果。

例如在ListView中的配置:

在listview中配置
要注意的是,在设置ListView中的item时这样配置之后,在滚动ListView或选中某个item时,如果item被选中的图片是圆角,就可以看到四个角会多出一些显示效果,这些就是ListView中item的高亮显示,如果想去掉这点效果请参考http://blog.csdn.net/ssmoom/article/details/14229997;

原创粉丝点击