@H_502_1@在昨天的我初步弄清楚了怎样通过xml@H_502_1@文件来设置控件的属性,主要是通过res@H_502_1@文件夹内的attrs.xml@H_502_1@及styles.xml@H_502_1@两个xml@H_502_1@文件来完成的。今天主要来做个小例子来验证一下这个过程。
Attrs.xml@H_502_1@这个文件是用来定义控件属性的文件,结合下面例子来详细说明这个文件。
- <resources>
- <declare-styleable name="HwExControl">
<attr name="text" format="string" />
<attr name="title" format="string" />
<attr name="iconid" format="integer" />
<attr name="height" format="dimension" />
<attr name="width" format="dimension" />
<attr name="background" format="reference|color" />
</declare-styleable>
</resources>
<declare-styleable name="HwExControl">@H_502_1@这行代码定义了控件的名称HwExControl@H_502_1@;
<attr name="text" format="string" /> @H_502_1@这行代码定义了控件中一个属性,我不知道这个称为属性是否合适,它定义了一个字符串(format=”string”@H_502_1@表明它是一个字符串)存在于这个控件中,有可能会显示在这个控件中,能不能显示要在java@H_502_1@代码中予以控制或者另外在添加一个属性来控制是否显示。
@H_502_1@下面几个就不一一介绍了,他们都是这个控件的属性。对于这些属性的format@H_502_1@从我了解到的来看有float@H_502_1@、string@H_502_1@、reference@H_502_1@、color@H_502_1@、dimension@H_502_1@等,其中有些format@H_502_1@并不是Java@H_502_1@中的基本类型,我现在还不太明白他们的用法,这个在以后的学习来补充说明。
@H_502_1@设置完这个xml@H_502_1@文件之后在相应的控件Java@H_502_1@文件中需要编写如下代码来接收(@H_502_1@不知道“接收”这个词用的是否准确^_^)xml@H_502_1@文件设置的属性:
public void getHwExControlAttrs(Context context,AttributeSet attrs,int defStyle){
TypedArray a = context.obtainStyledAttributes(
attrs,R.styleable.HwExControl,defStyle,0);
mTitle = a.getString(R.styleable.HwExControl_title);
mText = a.getString(R.styleable.HwExControl_text);
mIconID = a.getInt(R.styleable.HwExControl_iconid,0);
mBackground = a.getDrawable(R.styleable.HwExControl_background);
}
@H_502_1@在这段代码中有个对象a@H_502_1@,这个是接收控件属性的对象,它是一个TypedArray@H_502_1@类的对象,对于TypedArray@H_502_1@类在sdk@H_502_1@上是这样解释的:它是一个用来装载从obtainStyledAttributes@H_502_1@或者obtainAttributes@H_502_1@取回数据的数组容器。(Container for an array of values that were retrieved with obtainStyledAttributes(AttributeSet,int[],int,int) or obtainAttributes(AttributeSet,int[]).)@H_502_1@。用这个装载完从xml@H_502_1@文件里接收到的属性后通过 TypedArray@H_502_1@类自带的一些方法就可以分离出这些属性了。