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. 笔记77-listview属性介绍
  2. android使用自定义属性
  3. Android五大布局(二)——RelativeLayout、TableLayout 和AbsoulteL
  4. android上传图片和参数(属性)到服务器
  5. Android(安卓)横竖屏切换的Activity生命周期演示-面试常问题
  6. Android开发学习:ImageView的scaletype属性
  7. Android(安卓)字体修改
  8. Android问题集锦之二十一:No resource found that matches the gi
  9. android Dialog 背景问题

随机推荐

  1. Android(安卓)下拉刷新,非常强大的下拉刷
  2. 创建android逐帧动画的两种方式
  3. Android之Handler用法总结
  4. android 中文api (62) —— ViewSwitcher
  5. Android——开发环境
  6. 总目录
  7. Android(安卓)之 AsyncTask 异步任务
  8. [Android] ACTION_GET_CONTENT与ACTION_P
  9. android通过ksoap2对webservice的解析
  10. android之BitMap