转,android Selector

最近在做个新闻客户端,经常需要使用selector,先转一下,做完后再自己写一篇

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

http://blog.csdn.net/forsta/article/details/26148403

Android中的Selector主要是用来改变ListView和Button控件的默认背景。其使用方法可以按一下步骤来设计:


(以在mylist_view.xml为例)


1.创建mylist_view.xml文件

首先在res目录下新建drawable文件夹,再在新建的drawable文件夹中新建mylist_view.xml,其目录结构为:res/drawable/mylist_view.xml。


2.根据具体需求编辑mylist_view.xml文件

新建mylist_view.xml文件后,在没有添加任何属性时其内部代码结构为:

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8" ?>     
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">   
  3.    
  4. </selector>  

下面就可以根据项目需求,在其内部定义为自己想要的样式了,主要属性如下:

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8" ?>     
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">   
  3. <!-- 默认时的背景图片-->    
  4.   <item android:drawable="@drawable/pic1" />      
  5. <!-- 没有焦点时的背景图片 -->    
  6.   <item android:state_window_focused="false"     
  7.         android:drawable="@drawable/pic1" />     
  8. <!-- 非触摸模式下获得焦点并单击时的背景图片 -->    
  9.   <item android:state_focused="true" android:state_pressed="true"   android:drawable"@drawable/pic2" />   
  10. <!-- 触摸模式下单击时的背景图片-->    
  11. <item android:state_focused="false" android:state_pressed="true"   android:drawable="@drawable/pic3" />    
  12. <!--选中时的图片背景-->    
  13.   <item android:state_selected="true"   android:drawable="@drawable/pic4" />     
  14. <!--获得焦点时的图片背景-->    
  15.   <item android:state_focused="true"   android:drawable="@drawable/pic5" />     
  16. </selector>  

3.引用 mylist_view.xml文件


三种方法可以来引用刚才创建的文件:

(1)在ListView中添加如下属性代码

[html]  view plain copy
  1. android:listSelector="@drawable/mylist_view"  

(2)在 ListView的item界面中添加如下属性代码

[html]  view plain copy
  1. android:background="@drawable/mylist_view"  

(3)利用JAVA代码直接编写

[java]  view plain copy
  1. Drawable drawable = getResources().getDrawable(R.drawable.mylist_view);   
  2. listView.setSelector(drawable);  

为了防止列表拉黑的情况发生,需要在 ListView中添加以下的属性代码

[html]  view plain copy
  1. android:cacheColorHint="@android:color/transparent"  

属性介绍:

android:state_selected选中

android:state_focused获得焦点

android:state_pressed点击

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

在Android开发过程中,经常对某一View的背景在不同的状态下,设置不同的背景,增强用户体验。如果按钮,在按下时,背景变化,如果在代码中动态设置,相对比较麻烦。Android为我们提供了selector背景选择器可以非常方便的解决这一问题。

Selector的结构描述:

1.android:state_pressed="true/false"

true:表示按下状态下使用,false:表示非按下状态下使用。

2.android:state_focused="true/false"

ture:表示聚焦状态使用(例如使用滚动球/D-pad聚焦Button),false:表示非聚集状态下使用。

3.android:state_selected="true/false"

true:表示被选中状态下使用,false:表示非选中下使用

4.android:state_active="true/false"

true:表示可勾选状态时使用,false:表示不可勾选状态下使用

5. android:state_checkable="true/false"

true:表示勾选状态下使用,false:表示非勾选状态使用

6.android:state_checked="true/false"

true:表示勾选状态下使用,false:表示非勾选状态使用

7. android:state_enabled="true/false"

true:表示可用状态使用(能接收触摸/点击事件),false:表示不可用状态使用

8. android:state_window_focused="true/false"

true:表示应用程序窗口有焦点时使用(应用程序在前台),false:表示无焦点时使用
9.android:background

设置背景图片 模拟灯开启关闭

在drawable目录先新建bg_button.xml

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:state_checked="true" android:drawable="@drawable/r7"></item>  
  4.     <item android:state_checked="false" android:drawable="@drawable/r7b"></item>  
  5. </selector>  

为了方便点击查看效果 使用CheckBox组件

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <CheckBox   
  2.       android:layout_width="wrap_content"  
  3.       android:layout_height="wrap_content"  
  4.       android:button="@null"  
  5.       android:textSize="15sp"  
  6.       android:textColor="#EE2C2C"  
  7.       android:drawableTop="@drawable/bg_button"  
  8.       android:text="灯"/>  

效果:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值