本文转自:http://dev.10086.cn/cmdn/wiki/index.php?doc-view-6014.html

最近做listview和button都要改变Android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法。
首先android的selector是在drawable/xxx.xml中配置的。
先看一下listview中的状态:
把下面的XML文件保存成你自己命名的.xml文件(比如list_item_bg.xml),在系统使用时根据ListView中的列表项的状态来使用相应的背景图片。
drawable/list_item_bg.xml

XML/HTML代码
  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"
  10. android:drawable= "@drawable/pic2" />
  11. <!-- 触摸模式下单击时的背景图片 -->
  12. <item android:state_focused="false" android:state_pressed="true"
  13. android:drawable="@drawable/pic3" />
  14. <!--选中时的图片背景  -->
  15. <item android:state_selected="true"
  16. android:drawable="@drawable/pic4" />
  17. <!--获得焦点时的图片背景  -->
  18. <item android:state_focused="true"
  19. android:drawable="@drawable/pic5" />
  20. </selector>

使用些xml文件:第一种是在listview中配置android:listSelector="@drawable/list_item_bg
或者在listview的item中添加属性android:background=“@drawable/list_item_bg"即可实现,或者在Java代码中使用:Drawable drawable = getResources().getDrawable(R.drawable.list_item_bg);  
       ListView.setSelector(drawable);同样的效果。
但是这样会出现列表有时候为黑的情况,需要加上:android:cacheColorHint="@android:color/transparent"
使其透明。
其次再来看看Button的一些背景效果:
android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件
根据这些状态同样可以设置button的selector效果。也可以设置selector改变button中的文字状态。
以下就是配置button中的文字效果:
drawable/button_font.xml

XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item android:state_selected="true" android:color="#FFF" />
  4. <item android:state_focused="true" android:color="#FFF" />
  5. <item android:state_pressed="true" android:color="#FFF" />
  6. <item android:color="#000" />
  7. </selector>

Button还可以实现更复杂的效果,例如渐变啊等等。

XML/HTML代码
  1. drawable/button_color.xml
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <selector xmlns:android="http://schemas.android.com/apk/res/android">         /
  4. <item android:state_pressed="true">//定义当button 处于pressed 状态时的形态。
  5. <shape>
  6. <gradient  android:startColor="#8600ff" />
  7. <stroke   android:width="2dp" android:color="#000000" />
  8. <corners android:radius="5dp" />
  9. <padding android:left="10dp" android:top="10dp"
  10. android:bottom="10dp" android:right="10dp"/>
  11. </shape>
  12. </item>
  13. <item android:state_focused="true">//定义当button获得 focus时的形态
  14. <shape>
  15. <gradient android:startColor="#eac100"/>
  16. <stroke android:width="2dp" android:color="#333333"  color="#ffffff"/>
  17. <corners android:radius="8dp" />
  18. <padding android:left="10dp" android:top="10dp"
  19. android:bottom="10dp" android:right="10dp"/>
  20. </shape>
  21. </item>
  22. </selector>

最后,需要在包含 button的xml文件里添加两项。假如是 main.xml 文件,
我们需要在<Button />里加两项。 
     android:focusable="true" 
     android:backgroud="@drawable/button_color"
这样当你使用Button的时候就可以甩掉系统自带的那黄颜色的背景了,实现个性化的背景,配合应用的整体布局非常之有用啊。

[转]android的selector,背景选择器相关推荐

  1. android的 selector 背景选择器和 shape 详解(转)

    转自:http://blog.csdn.net/chengyingzhilian/article/details/7277106 感谢原作者 ============================= ...

  2. [转]android selector 背景选择器

    关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是 很全,所以现在总结一下android的selector的用法. 首先android的selector是 ...

  3. 浅谈android的selector,背景选择器

    2019独角兽企业重金招聘Python工程师标准>>> 关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下andr ...

  4. 背景选择器selector替换按钮默认背景

    一.效果 正常状态 获取焦点或按下 按钮的背景图片是.9图,.9图的制作过程,见下面博文 http://blog.csdn.net/zengmingen/article/details/5019324 ...

  5. 碎步一:根据用户喜好选择不同背景图(背景选择器)

    本文章主要功能是,用户根据自己的爱好选择背景图片(此应用可拓展为,定时更新手机桌面的背景图片,此处暂不实现,也许以后有空会进行实现). 言归正传,下面说下主要的实现原理和相关技术,首先设置屏幕为全屏显 ...

  6. Android使用selector点击按钮文字变色

    需求:开发中按钮按压时字体颜色变为灰色 松开后恢复 实现:1.res下新建color文件夹(放drawable文件夹下也可),创建文件btn_text_color.xml: <selector ...

  7. Android ListView 自定义背景后 滚动时的背景变黑问题

    ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景图片,或者背景颜色时,滚动时listView会黑掉,原因是,滚动时,列表里面的view重绘时,用的依旧 ...

  8. Android Studio Button背景颜色无法修改

    关于Android Studio Button背景无法修改,一直呈现亮紫色 作为安卓初学者,发现Button的背景颜色无法修改,也没法链接到drawable的样式xml文件,前前后后折腾了好久,查阅了 ...

  9. android自定义滚轴选择器_Android自定义控件实战—滚动选择器PickerView

    手机里设置闹钟需要选择时间,那个选择时间的控件就是滚动选择器,前几天用手机刷了MIUI,发现自带的那个时间选择器效果挺好看的,于是就自己仿写了一个,权当练手.先来看效果: 效果还行吧?实现思路就是自定 ...

最新文章

  1. mysql 的 VARCHAR VARCHAR2
  2. Py:python利用easygui实现最简单GUI带你学习区块链技术的发展和由来
  3. 企业日志分析ELK(Logstash+Elasticsearch+Kibana)介绍及搭建
  4. SAP Spartacus organization unit list抬头显示所有unit的标题实现
  5. 业务流程、长周期服务和微服务
  6. Sql Server和oracle的函数区别总结
  7. python sklearn svm 权重_sklearn svm基本使用
  8. tfs2015 生成与发布 配置
  9. 《Java编程思想》笔记10------字符串
  10. java image to base64_Java实现base64图片编码数据转换为本地图片的方法
  11. 白话SpringCloud | 第三章:服务注册与发现-高可用配置(Eureka)-下
  12. 机器学习初级入门(一)感知机
  13. C#语法基础(三)----窗体设计
  14. JDK动态代理的实现
  15. hashmap java 排序_Java 对HashMap进行排序的三种常见方法
  16. 音视频入门系列-字幕篇(SSA ASS)
  17. 基于Python的淘宝用户行为数据分析
  18. b哩b哩视频弹幕爬虫程序(python)
  19. 【网关】什么是网关、网桥和交换机(集线器、网桥、交换机、路由器、网关大解析)
  20. camel发布多个服务

热门文章

  1. 如何使用BigDecimal?
  2. RateLimiter 源码分析(Guava 和 Sentinel 实现)
  3. 有必要将所有机器学习算法都实现一遍吗?
  4. 萌宝1天陪博士父母赶2场毕业典礼走红!上午是妈妈博士毕业,下午是爸爸......
  5. 为了杀蚊子,这位博士用树莓派DIY了一把激光枪!网友:伤到人怎么办?
  6. 达摩院清华博士研发了一个AI摸鱼神器!有了它,老板都不好意思打扰你
  7. 最新!2020中国高校毕业生薪资报告出炉
  8. 导师:顶会论文3天都复现不出来?你退学吧!
  9. 5分钟!用Java实现目标检测 | PyTorch
  10. 这本1900页的机器学习数学全书火了!完整版开放下载