Android中的Selector的用法

http://blog.csdn.net/shakespeare001/article/details/7788400#comments

Android中的Selector主要是用来改变ListView和Button控件的默认背景

one template:

<?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/ic_mymenu_pressed" /> <!-- pressed -->     <item android:state_focused="true"           android:drawable="@drawable/ic_mymenu_pressed" /> <!-- focused -->     <item android:drawable="@drawable/ic_mymenu" /> <!-- default -->  </selector>

<?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设置点击背景效果,有三种方法可以来引用刚才创建的selector文件:

(1)在ListView中添加如下属性代码
android:listSelector="@drawable/mylist_view"

(2)在ListView的item界面中添加如下属性代码
android:background="@drawable/mylist_view"

(3)利用JAVA代码直接编写
Drawable drawable = getResources().getDrawable(R.drawable.mylist_view);
listView.setSelector(drawable);

为了防止列表拉黑的情况发生,需要在ListView中添加以下的属性代码
android:cacheColorHint="@android:color/transparent"
or
android:cacheColorHint="#00000000"

or

listView.setCacheColorHint(0);

属性介绍:

android:state_selected 选中

android:state_focused 获得焦点

android:state_pressed 点击

android:state_enabled 设置是否响应事件,指所有事件


自定义Button Style

每个button创建的时候都是用的系统默认的风格,如果不满意系统提供的风格的话,你可以用一个 state list drawable 来替代以前的风格.每个state list drawable 是一个drawable resource. 它定义在xml文件中,并且能改变当前的每个状态的背景图.一旦定义了一个自己设计的xml文件,可以在android:background中使用它.

此xml文件中的格式如下,并且很明显发现,一个xml由一个selector元素,包含N个item元素组

<?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"] />  

//例子:<?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>  

更多相关文章

  1. android上传图片和参数(属性)到服务器
  2. android使用自定义属性
  3. 笔记77-listview属性介绍
  4. android Dialog 背景问题
  5. 去掉WebView中的白色背景
  6. 一些关于RelativeLayout属性的用法
  7. Android属性之excludeFromRecents
  8. 关于android的animation的xml定义中的android:interpolator属性

随机推荐

  1. [置顶] Android(安卓)编码规范 | 代码风
  2. LinearLayout分割线
  3. Android(安卓)NDK r5 windows系统上安装
  4. wifi学习笔记
  5. android linux镜像文件下载, ubuntu下载地
  6. Android(安卓)利用ViewPager、Fragment、
  7. toLowerCase()方法 toUpperCase()方法
  8. Android(安卓)Bitmap内存占用及缓存
  9. Android自动挂断来电(ITelephony的使用)
  10. 【Android(安卓)Developers Training】 6