12.1.1 示例
1. 自定义 Style 和属性
1)自定义一个类 MyTextView
2)新建 res/values/attrs.xml 文件
- reference 指的是从 string.xml、drawable.xml、color.xml 等文件中引用过来的值。
- flag 是自己定义的,类似于 android:gravity=”top”。
- dimension 指的是从 dimensions.xml 文件中引用过来的值。注意,这里如果是 dp,就会进行像素转换。
注意:declare-styleable 的 name 值对应所定义的类名。自定义属性值可以组合使用。比如 <attr name=”border_color” format=”color | reference”/> 表示既可以自定义 color 值 (比如 #ff00ff),也可以利用 @color/xxx 来引用 colors.xml 中已有的值。
12.1.2 在 XML 中使用自定义的属性
res/layout/act_main.xml
下面代码是导入自定义的属性集,使 XML 能识别我们自定义的属性。attrstest 是自定义的,可随意定义为 xxx,对应的访问自定义控件的方式就是 xxx:headerHeight=”300dp”
12.1.3 在代码中获取自定义属性的值
使用代码获取用户所定义的某个属性的值,主要使用 TypedArray 类,这个类提供了获取某个属性值的所有方法,如下所示。需要注意的是,在使用完以后必须调用 TypedArray 类的 recycle() 函数来释放资源。
使用示例:
效果如下图所示。
12.1.4 declare-styleable 标签其他属性的用法
1. reference:参考某一资源 ID
属性定义:
属性使用:
2. color:颜色值
属性定义:
属性使用:
3. boolean:布尔值
属性定义:
属性使用:
4. dimension:尺寸值
属性定义:
属性使用:
5. float:浮点值
属性定义:
属性使用:
6. integer:整型值
属性定义:
属性使用:
7. string:字符串
属性定义:
属性使用:
8. fraction:百分数
属性定义:
属性使用:
9. enum:枚举值
属性定义:
属性使用:
10. flag:位或运算
属性定义:
属性使用:
特别注意:属性在定义时可以指定多种类型的值。
|
|