TypedArray和attrs.xml和AttributeSet这一系列都是自定义控件属性时要用到的内容。
首先说说attrs.xml:它是定义成类似于这种形式的。
1.主要讲讲里面的format属性:
①. reference:参考某一资源ID。
(1)属性定义:
(2)属性使用:
android:layout_width="42dip"
android:layout_height="42dip"
android:background="@drawable/图片ID"
/>
②. color:颜色值。
(1)属性定义:
(2)属性使用:
android:layout_width="42dip"
android:layout_height="42dip"
android:textColor="#00FF00"
/>
③. boolean:布尔值。
(1)属性定义:
(2)属性使用:
android:layout_width="42dip"
android:layout_height="42dip"
android:focusable="true"
/>
④. dimension:尺寸值。
(1)属性定义:
(2)属性使用:
android:layout_width="42dip"
android:layout_height="42dip"
/>
⑤. float:浮点值。
(1)属性定义:
(2)属性使用:
android:fromAlpha="1.0"
android:toAlpha="0.7"
/>
⑥. integer:整型值。
(1)属性定义:
(2)属性使用:
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/图片ID"
android:pivotX="50%"
android:pivotY="50%"
android:framesCount="12"
android:frameDuration="100"
⑦. string:字符串。
(1)属性定义:
(2)属性使用:
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g"
/>
⑧. fraction:百分数。
(1)属性定义:
(2)属性使用:
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@anim/动画ID"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="200%"
android:pivotY="300%"
android:duration="5000"
android:repeatMode="restart"
android:repeatCount="infinite"
/>
⑨. enum:枚举值。
(1)属性定义:
(2)属性使用:
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
10. flag:位或运算。
(1)属性定义:
(2)属性使用:
android:name=".StyleAndThemeActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateUnspecified | stateUnchanged | stateHidden">
注意:
属性定义时可以指定多种类型值。
(1)属性定义:
(2)属性使用:
android:layout_width="42dip"
android:layout_height="42dip"
android:background="@drawable/图片ID|#00FF00"
/>
下面是一个布局文件:
version="1.0"encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
//自定义的View的路径为com.xc.demo
xmlns:test="http://schemas.android.com/apk/res/com.xc.demo"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
android:layout_width="fill_parent"
android:layout_height="fill_parent"
//这里引用 改变字体和颜色 textColor和textSize都是根据前面的attrs.xml文件设置的
test:textSize="100dp"
test:textColor="#ff0000"
/>
2.TypedArray的作用是在代码中设置。
publicMyView(Context context, AttributeSet attrs) {
this(context);
TypedArray a = context
.obtainStyledAttributes(attrs, R.styleable.MyView);
intcolor = a.getColor(R.styleable.MyView_textColor,0XFF0000FF);
floatsize = a.getDimension(R.styleable.MyView_textSize,50);
mPaint.setColor(color);
mPaint.setTextSize(size);
a.recycle();
}
R.styleable.MyView是attrs.xml中的名字
具体的设置是依靠名字+"_"+名字得到来设置的。
3.如果代码和xml中都设置了,一般以xml中设置为先。
http://5200415.blog.51cto.com/3851969/1012267