做Android布局是件很享受的事,这得益于他良好的xml方式。使用xml可以快速有效的为软件定义界面。可是有时候我们总感觉官方定义的一些基本组件不够用,自定义组件就不可避免了。那么如何才能做到像官方提供的那些组件一样用xml来定义他的属性呢?现在我们就来讨论一下他的用法。
一、在res/values文件下定义一个attrs.xml文件,代码如下:
package com.tu.diy.views;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
public class DiyView extends View {
public DiyView(Context context, AttributeSet attrs) {
super(context, attrs);
//获取Xml定义的值: declare-styleable name="DiyViewStyle"
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.DiyViewStyle);
// int ref_col = ta.getInt(R.styleable.DiyViewStyle_ref_col, -1);//异常
int col = -1;
try {
col = ta.getColor(R.styleable.DiyViewStyle_ref_col, -1);//注意前DiyViewStyle_ref_col
} catch (Exception e) {
}
int ref = -400;
if (col == -1)
ref = ta.getResourceId(R.styleable.DiyViewStyle_ref_col, -1);
String ref_col = "";
if (ref == -1)
ref_col = ta.getString(R.styleable.DiyViewStyle_ref_col);//自定义的颜色使用getColor获取不到.
String remain = ta.getString(R.styleable.DiyViewStyle_remain);
Log.e("comtu_test", "=====>" + col + "====>" + ref + "=====>" + ref_col + "=====>" + remain);
ta.recycle();//回收
}
public DiyView(Context context) {
super(context);
}
}
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.DiyViewStyle);
一、reference:参考指定Theme中资源ID。
1.定义:
1
2
3
|
|
2.使用:
1
|
<Buttonzkx:label="@string/label" > |
二、Color:颜色
1.定义:
1
2
3
|
|
2.使用:
1
|
zkx:textColor="#ff0000"/> |
三、boolean:布尔值
1.定义:
1
2
3
|
|
2.使用:
1
|
zkx:isVisible="false"/> |
四、dimension:尺寸值
1.定义:
1
2
3
|
|
2.使用:
1
|
zkx:myWidth="100dip"/> |
五、float:浮点型
1.定义:
1
2
3
|
|
2.使用:
1
|
|
六、integer:整型
1.定义:
1
2
3
|
|
2.使用:
1
|
|
七、string:字符串
1.定义:
1
2
3
|
|
2.使用:
1
|
|
八、fraction:百分数
1.定义:
1
2
3
|
|
2.使用:
1
|
|
九、enum:枚举
1.定义:
1
2
3
4
5
|
|
2.使用:
1
|
zkx:language="English"/> |
十、flag:位或运算
1.定义:
1
2
3
4
5
6
|
|
2.使用:
1
|
|
属性定义时可以指定多种类型值:
1
2
3
|
|
使用:
1
|
|
半原创半转:
http://blog.csdn.net/congqingbin/article/details/7869730
http://blog.sina.com.cn/s/blog_61f4999d010110o8.html