Drawable(6)关于StateList的补充
模板:
- <?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的补充的更多相关文章
- 【转】java代码中实现android背景选择的selector-StateListDrawable的应用
原文网址:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0924/1712.html 下面的代码应该很多人都熟悉: 1 2 3 ...
- 动态更换view类的背景---StateListDrawable的应用
StateListDrawable可以根据View的不同状态,更换不同的背景 可以应用如EditText,Button等中,以Button为例 系统中默认的按钮被按下的颜色和未点击时的颜色不一样,该种 ...
- 动态更换view类的背景----StateListDrawable的应用
StateListDrawable可以根据View的不同状态,更换不同的背景 可以应用如EditText,Button等中,以Button为例 系统中默认的按钮被按下的颜色和未点击时的颜色不一样,该种 ...
- Android--底部导航栏的动态替换方案
1.通常来说,一般情况下,我们的app的BottomTab会有集中实现方式. 自定义view,然后自己写逻辑去实现互斥. 自由度最高,因为啥都是自己写的. 使用RadioGroup+RadioButt ...
- Android设计和开发系列第二篇:Action Bar(Develop—Training)
Adding the Action Bar GET STARTED DEPENDENCIES AND PREREQUISITES Android 2.1 or higher YOU SHOULD AL ...
- android的动态代码
1,Android代码设置Shape,corners,Gradient (http://blog.csdn.net/houshunwei/article/details/17392409) int ...
- Drawable(7)让一个没有pressed状态的控件使用StateList,显示pressed图片。
TextView没有按下状态,Button有. 如图1,内容1在一个TextView上,默认它并没有按下状态. 如何让TextView有呢. 在xml中加入属性: android:clickable= ...
- 有关Color和Drawable你所不知道的那些内容
Android开发中,我们经常会用到Color或Drawable,有时他们是可以混用的,有时却有严格的区别. Drawable 体系结构 Drawable是可绘制物件的一般抽象.与View不同,Dra ...
- Android之drawable state各个属性具体解释
我们在定义一个drawable的时候能够通过xml定义的drawable对象.它使得一个图片能在不同的状态下显示不同的图案,比方一个Button,它有pressed.focused,或者其他状态,通过 ...
随机推荐
- Office EXCEL 如何设置最大行高
对于单个单元格行来说,行高必须在0-409之间 但是如果合并了两个单元格,则行高就扩展了一倍,不止409,而是两倍的409.
- 熊猫猪新系统測试之二:Mac OS X 10.10 优胜美地
在第一篇windows 10技术预览版測试之后.本猫为大家呈现还有一个刚刚才更新的mac操作系统:"优胜美地".苹果相同一改以猫科动物为代号命名的传统.在10.9的Maverick ...
- update语句执行卡死现象原因及解决方案
https://blog.csdn.net/wpz0713/article/details/51499654 原因分析: 可能在PLSQL Developer执行update时没有commit,ora ...
- 【Mongodb教程 第十一课 】MongoDB 聚合
聚合操作过程中的数据记录和计算结果返回.聚合操作分组值从多个文档,并可以执行各种操作,分组数据返回单个结果.在SQL COUNT(*)和group by 相当于MongoDB的聚集. aggregat ...
- soapUI系列之—-01 介绍soapUI简介,groovy 简介
1.soapui简介 SoapUI是一个自由和开放源码的跨平台功能测试解决方案.通过一个易于使用的图形界面和企业级功能,SoapUI让您轻松,快速创建和执行自动化功能.回归.合规和负载测试.在一个测试 ...
- 学习Opencv 2.4.9 (一)---Opencv + vs2012环境配置
作者:咕唧咕唧liukun321 来自:http://blog.csdn.net/liukun321 首先获得最新的Opencv 2.4.9源代码:opencv源代码下载 一.Opencv环境变量配置 ...
- malloc内存分配
网上总结到的信息: (1) 静态分派:是在栈上分配,是由用户自己申请,是由操作系统自己释放的 动态分配:是由编译器分配,操作系统没有提供这样的机制,所以自己申请,必须自己删除! (2)你也要明确.栈的 ...
- 珠海鼎芯(D-Chip)IMX6读取CPU的UID的方法【转】
本文转载自:http://blog.csdn.net/williamdedong/article/details/52712084 在使用IMX6板子的时候,有时会想着是否可以把板子搞一个唯一标识呢, ...
- HDU3038 How Many Answers Are Wrong —— 带权并查集
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3038 How Many Answers Are Wrong Time Limit: 200 ...
- YTU 2887: D--机器人Bill
2887: D--机器人Bill 时间限制: 1 Sec 内存限制: 128 MB 提交: 112 解决: 22 题目描述 最近,Dr. Jiang 新设计一个机器人Bill.Bill很聪明,会做 ...