android开发教程之自定义属性用法详解
本文导语: 最近项目中经常需要用到自定义控件,因此自定义属性也是经常要用到的,在此说明一下自定义属性的用法: 自定义属性都存在于/value/attr.xml文件中,以如下格式存在。 代码如下: ...... 对于自定义属性中的format的值及其含...
最近项目中经常需要用到自定义控件,因此自定义属性也是经常要用到的,在此说明一下自定义属性的用法:
自定义属性都存在于/value/attr.xml文件中,以如下格式存在。
......
对于自定义属性中的format的值及其含义如下:
format属性值:reference 、color、boolean、dimension、float、integer、string、fraction、enum、flag
1. reference:参考某一资源ID。
(1)属性定义:
(2)属性使用:
2.color:颜色值。
(1)属性定义:
(2)属性使用:
3.boolean:布尔值。
(1)属性定义:
(2)属性使用:
4.dimension:尺寸值。
(1)属性定义:
(2)属性使用:
5.float:浮点值。
(1)属性定义:
(2)属性使用:
6.integer:整型值。
(1)属性定义:
(2)属性使用:
7.string:字符串。
(1)属性定义:
(2)属性使用:
8.fraction:百分数。
(1)属性定义:
(2)属性使用:
9.enum:枚举值。
(1)属性定义:
(2)属性使用:
10.flag:位或运算。
(1)属性定义:
(2)属性使用:
特别要注意:
属性定义时可以指定多种类型值。
(1)属性定义:
(2)属性使用:
下面说说AttributeSet与TypedArray在自定义控件中的作用:
AttributeSet的作用就是在控件进行初始化的时候,解析布局文件中该控件的属性(keyeg:background)与该值(valueeg:@drawable/icon)的信息封装在AttributeSet中,传递给该控件(View)的构造函数。对于非Android自带的属性,在View类中处理时是无法识别的,因此需要我们自己解析。所以这就要用到另外一个类TypedArray。在AttributeSet中我们有属性名称,有属性值,但是控件如何知道哪个属性代表什么意思呢?这个工作就由TypedArray来做了。TypedArray对象封装了/values/attrs.xml中的styleable里定义的每个属性的类型信息,通过TypedArray我们就可以知道AttributeSet中封装的值到底是干什么的了,从而可以对这些数据进行应用。
AttributeSet就相当于一盒糖,TypedArray就相当于这盒糖上的标签说明,告诉用户每个糖的口味等。这盒糖有什么口味是由用户自己的styleable文件里面的内容来决定的。