今天研究了一下自定义View中XML属性的解析。
首先,我们在声明自定义View时,会直接声明构造函数:
public XCustomView(Context context, AttributeSet attrs)
构造函数接受了一个context变量和一个attrs变量,我们使用attrs就可以解析XML属性了。
这里通常使用的方法是声明一个TypedArray变量,通过context.obtainStyledAttributes方法来获取attrs中的属性;实际这里直接使用attrs来解析也是可以的,但会稍麻烦一些。
自定义View的声明
假设我们的自定义View类名是XCustomView,对应的,先声明一些自定义属性:
CustomViewStyleable.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="XCustomView">
<attr name="testAttrFirst" format="integer"/>
<attr name="testAttrSecond" format="string"/>
</declare-styleable>
</resources>
简单定义两个属性,其值分别为整形和字符串类型。
接下来简单写一个Activity的布局文件,在以前使用eclipse时,在指定我们自定义属性的名字时,需要在xmlns后指定包名;在Android Studio环境下,由于整个项目使用gradle构建,因此包名根据设置可以在编译时产生变化,IDE此时提示我们不要硬编码将包名设置进去,只需要使用特殊字段来标识就可以&