前言

  在开发一个应用程序过程中不可避免的要去修改组件的样式,比如按钮、输入框等。现在就看下如何通过Seletor实现样式的自定义。先看下简单的效果对比

aaarticlea/png;base64,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" alt="" />

概要实现

  首先写这个Selector XML文件,叫做button_selector,放到了drawable文件夹下,大概内容如下所示

  

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 按下状态 -->
<item android:state_pressed="true">
<shape >
<!-- 边框颜色 -->
<stroke android:width="1dip" android:color="#728ea3" />
<!-- 背景颜色 -->
<solid android:color="#FFFFcc" />
</shape> </item>
<!-- 默认状态 -->
<item>
<shape>
<!-- 边框颜色 -->
<stroke android:width="1dip" android:color="#728ea3" />
<!-- 背景颜色 -->
<solid android:color="#FFFFFF" />
</shape>
</item> </selector>

  然后为该按钮设置background属性:@drawable/button_selector,如下所示

  

<Button
android:id="@+id/btnSelector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_selector"
android:text="Selector演示"
/>

  这样自定义样式就成功的应用到了这个按钮上了。

Selector

  先来看下官方描述:

  You can describe the state list in an XML file. Each graphic is represented by an <item> element inside a single <selector> element. Each <item> uses various attributes to describe the state in which it should be used as the graphic for the drawable.

  意思是说:你可以用一个XML文件来描述状态列表。在唯一的selector节点下,用item来描述每一种状态。每一个item通过不同的属性来标识用于哪种属性。

  下面就看下item的具体属性

  android:drawable:引用一个drawable资源

  android:state_pressed:Boolean值,如果设置为true则代表用于对象在被按下的时候

  android:state_focused:Boolean值,如果设置为true则代表用于对象在获得焦点的时候

  android:state_hovered:Boolean值,如果设置为true则代表用于对象在hover状态的时候

  android:state_selected:Boolean值,如果设置为true则代表用于对象在选中的时候

  android:state_checkable:Boolean值,如果设置为true则代表用于对象允许选中的时候

  android:state_checked:Boolean值,如果设置为true则代表用于对象被选中的时候

  android:state_enabled:Boolean值,如果设置为true则代表用于对象可用的时候(响应触摸或点击事件)

  android:state_activated:Boolean值,如果设置为true则代表用于对象被激活的时候

  android:state_window_focused:Boolean值,如果设置为true则代表用于窗体获得焦点的时候

  通过以上属性,就可以灵活的定制出期望的结果了,这次例子只是展示了android:state_pressed这一种状态的效果。Selector代码为上文提到的button_selector。效果如下所示

  aaarticlea/png;base64,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" alt="" />

简单分析

  再来看下press的那个item内容。

  

<!-- 按下状态 -->
<item android:state_pressed="true">
<shape >
<!-- 边框颜色 -->
<stroke android:width="1dip" android:color="#728ea3" />
<!-- 背景颜色 -->
<solid android:color="#FFFFcc" />
</shape> </item>

  上图所示的按下效果是通过shape标签来完成的。这个标签用来指定背景的样式,由于这次重点介绍Selector的用法,Shape的用法就不过多解释了,只是把代码中出现的标签做下简单说明。

  stroke:用来设定背景边框的样式,可以去定义它的宽度(width),颜色(color),是否为虚线展示等等

  solid:用来设定背景颜色

后记

  这篇文字只是简单的介绍了下Selector的大体用法,具体的灵活使用可以构造出很强大的显示效果。

  原文地址:http://www.cnblogs.com/luoaz/p/3764784.html

  完整Demo:https://github.com/xiaoai-opensource/Selector

solid 

最新文章

  1. 关于SubSonic3.0插件更新字符串过长引发的System.Data.SqlClient.SqlException的异常修复
  2. mysql数据库乱码解决方法之一
  3. 关于UIView的方法animateWithDuration:animations:completion:的说明
  4. Python 下的unittest测试框架
  5. php序列化和反序列化
  6. Node连接MySQL
  7. Linux下循环、选择、顺序操作
  8. push和join
  9. UI基础:DataPersistent.沙盒
  10. usaco 猜数游戏
  11. js数学方法应用
  12. iOS类别(Category)与扩展(Extension)-b
  13. kafka单机安装配置
  14. MYSQL auto_increment 、default 关键字
  15. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型
  16. BZOJ3497 : Pa2009 Circular Game
  17. 深度学习原理与框架- batch_normalize(归一化操作)
  18. django2.0 + python3.6 在centos7 下部署生产环境的一些注意事项
  19. JAVA 没有重载运算符,那么 String 类型的加法是怎么实现的,以及String类型不可变的原因和好处
  20. python之文件操作的函数

热门文章

  1. spark HA
  2. iOS 开发之— NSURLProtocol
  3. solr查询字段为空值,删除字段空值的方法
  4. 【Android 界面效果31】Android--侧滑菜单应用的实现
  5. iOS UIimage初始化时的两种方法
  6. 关于VIM在Win10下的无意义折腾
  7. JAVA备忘录
  8. Oracle数据库作业-2 添加主键 外键
  9. C#用反射判断一个类型是否是Nullable同时获取它的根类型(转自网络)
  10. ASP.NET缓存全解析2:页面输出缓存 转自网络原文作者李天平