模板:

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

和属性含义:

<selector>属性
android:constantSize=["true" | "false"] item里面指定的drawable图片大小是否固定值,true表示图片居中按固定大小显示,false表示会绽放
android:dither=["true" | "false"]

是否让系统来帮我们处理颜色差异,一般android系统中使用的颜色是ARGB_8888,

但很多显示设置是RGB_565,这个ARGB_8888与RGB_565有什么区别呢。这个ARGB_8888也就

是说每一个像素点要拿4个字节来保存,依次每个字节是A8个字节,R8个字节,G8个字节,B8个字

节,来保存,而RGB_565它只用了两个字节来保存颜色,两个字节总共16位,前5位保存R,中间6位

保存G,后5位保存B.

android:variablePadding

这个是可变的填充,这个有什么用呢?这个就是,在当当前这个组件被selected的时候,

比如某一个tab被selected,或者listView里面的个item被selected的时候,如果设置为true的话,

那么被选的这个tab或item的填充就会变大,使得看上去与其它的tab或item不一样。

<item>的属性
android:drawable="@[package:]drawable/drawable_resource"  一般都为图片资源
android:state_pressed=["true" | "false"] 被按下状态开头,前提是有。true表示开启按下状态
android:state_focused=["true" | "false"] 高亮,焦点的时候的状态开头
android:state_hovered=["true" | "false"]

这个是api等组在14以上才有的,这个是当光标移动到某一个组件之上的时候的状态,

到目前为止,还没有看见过哪个手机设备带有鼠标之类的东西,

可能这个专门是为平板电脑设置的或者以后可能出现带有鼠标之类的设备而准备的吧,

文档中说,一般这个值设置为与focused这个值一样。

android:state_selected=["true" | "false"]

这个是当一个tab被打开的状态。或者一个listView等里面一个item被选择的时候的状态,

因此这个属性设置在一般的组件上面是没有用的,只有设置有作为tab或item的布局里面的项时,

这个属才起作用.

android:state_checkable=["true" | "false"]

这个是当一个组件在可以checked或不可以checked的时候的状态,现在较常见的,

能够checkable的组件有,单选项和多选项,所以这个属性只有设置在像这类组件上面才有作用的。

android:state_checked=["true" | "false"]

这个是当一个组件被checked 或者没有checked 的时候的状态,也就是说只有在可checkable

上面的组件才有作用的,一般常见的就是多选按钮组与单选按钮组里面的项,这个才有作用的。

android:state_enabled=["true" | "false"]

这个是当一个组件是否能处理touch或click事件的时候的状态,如果要对组件能否响应事件设

置不同背景的时候,就要靠这个属性了.

android:state_window_focused=["true" | "false"]

这个是是否对当前界面是否得到焦点的两种状态的设置,比如说当我们打开一个界面,

那么这个界面就获得了焦点,如果我们去把“通知”拉下来,那么这个界面就失去焦点,

或者弹出了一个对话框,那么这个界面也失去焦点了。

注意:

  最后文档特别提醒:系统是从上往下匹配的,如果匹配到一个item那么它就将采用这个item,而不是采用的最佳匹配的规则,所以设置缺省的状态,一定要写在最后,很多人为了保险起见,一开始就把缺省的写好,那么这样后面所有的item就都不会起作用了,还会因此找不着哪里出了问题。

Drawable(6)关于StateList的补充的更多相关文章

  1. 【转】java代码中实现android背景选择的selector-StateListDrawable的应用

    原文网址:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0924/1712.html 下面的代码应该很多人都熟悉: 1 2 3 ...

  2. 动态更换view类的背景---StateListDrawable的应用

    StateListDrawable可以根据View的不同状态,更换不同的背景 可以应用如EditText,Button等中,以Button为例 系统中默认的按钮被按下的颜色和未点击时的颜色不一样,该种 ...

  3. 动态更换view类的背景----StateListDrawable的应用

    StateListDrawable可以根据View的不同状态,更换不同的背景 可以应用如EditText,Button等中,以Button为例 系统中默认的按钮被按下的颜色和未点击时的颜色不一样,该种 ...

  4. Android--底部导航栏的动态替换方案

    1.通常来说,一般情况下,我们的app的BottomTab会有集中实现方式. 自定义view,然后自己写逻辑去实现互斥. 自由度最高,因为啥都是自己写的. 使用RadioGroup+RadioButt ...

  5. Android设计和开发系列第二篇:Action Bar(Develop—Training)

    Adding the Action Bar GET STARTED DEPENDENCIES AND PREREQUISITES Android 2.1 or higher YOU SHOULD AL ...

  6. android的动态代码

    1,Android代码设置Shape,corners,Gradient  (http://blog.csdn.net/houshunwei/article/details/17392409) int ...

  7. Drawable(7)让一个没有pressed状态的控件使用StateList,显示pressed图片。

    TextView没有按下状态,Button有. 如图1,内容1在一个TextView上,默认它并没有按下状态. 如何让TextView有呢. 在xml中加入属性: android:clickable= ...

  8. 有关Color和Drawable你所不知道的那些内容

    Android开发中,我们经常会用到Color或Drawable,有时他们是可以混用的,有时却有严格的区别. Drawable 体系结构 Drawable是可绘制物件的一般抽象.与View不同,Dra ...

  9. Android之drawable state各个属性具体解释

    我们在定义一个drawable的时候能够通过xml定义的drawable对象.它使得一个图片能在不同的状态下显示不同的图案,比方一个Button,它有pressed.focused,或者其他状态,通过 ...

随机推荐

  1. IntelliJ 中类似于Eclipse ctrl+q的是Ctrl+Shift+Backspace

    IntelliJ 中类似于Eclipse ctrl+q的是Ctrl+Shift+Backspace 回到刚刚编辑的地方: ctrl+alt+Left 是回到刚刚浏览的地方,不一定是编辑的地方,可能已经 ...

  2. Android 怎样查看系统的memory swap 资讯/信息

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  3. 九度OJ1004 Median

    题目描写叙述: Given an increasing sequence S of N integers, the median is the number at the middle positio ...

  4. Hdfs的ACL測试

    Hadoop从2.4.0版本号開始支持hdfs的ACL,在CDH5.0其中也集成了该特性,以下对其进行一些測试: unnamed user (file owner) 文件的拥有者 unnamed gr ...

  5. Hackrank Candies DP

    题目链接:传送门 题意: n个学生站一行,老师给每个学生发至少一个糖 相邻学生,a[i] > a[i-1] 的话,那么右边学生的糖一定要发得比左边学生的糖多 问你满足条件这个老师总共最少的发多少 ...

  6. 大学生程序设计邀请赛(华东师范大学)B. 分词 DP

    B. 分词   有一句句子因为粘贴的时候出现了一点问题空格全部丢失了.现在给一本字典,每个词都对应这个词出现的频率(每十亿).根据这个频率,我们可以根据下面的公式算出这个词带来的收益 P(word): ...

  7. java jdbc/ojdbc 链接oracle的三种方式

    方法一:使用service_name 连接oracle  jdbc:oracle:thin:@//:/<service_name> 例如: jdbc:oracle:thin:@//10.1 ...

  8. 【转】WdatePicker.js的使用方法 帮助文档 使用说明 如何使用

    [转]WdatePicker.js的使用方法 帮助文档 使用说明 如何使用 日期控件支持平面显示功能,只要设置一下eCont属性就可以把它当作日历来使用了,无需触发条件,直接显示在页面上 示例2-1 ...

  9. 如何将Eclipse中的项目迁移到Android Studio中

    如果你之前有用Eclipse做过安卓开发,现在想要把Eclipse中的项目导入到Android Studio的环境中,那么首先要做的是生成Build Gradle的文件.因为Android Studi ...

  10. linux内存管理之uboot第一步

    在进入讲解linux内存管理的kernel阶段以前,了解一下uboot阶段是如何准备好内存物理设备的,这是非常有意义的.通常进入到linux内核阶段之后,对内存芯片的物理特性寄存器访问是比较少的,强调 ...