为android自定义控件添加自定义属性

网上有很多文章讲这个,不过很多都有问题,下面是我整理的

http://blog.csdn.net/jdsjlzx/article/details/43452927

基本是按照这个来写,有一点问题是添加的是attrs.xml不是attr.xml

最后处理完Typedarray后要调用resycle()  原因见:http://www.cnblogs.com/kissazi2/p/4049982.html


中途出现过的问题:

1.error: No resource identifier found for attribute 'fadeType' in package 'com.smk.svgimage'

在布局文件中的命名空间出错,com.smk.svgimage是自定义控件所在包,而应该改成com.smk.svgviewdemo即MainActivity.java所在包,意思应该是res下的资源文件都是相对主包来说的(额意会),生成的R.java也是在包含MainActivity.java的包下,就像其他包中的java代码无法直接用R.id.xxx引用资源文件一样


2.在获取自定义的属性值时,总是读不出来

int fadeType = attrs.getAttributeResourceValue("http://schemas.android.com/apk/res/com.smk.svgviewdemo", "fadeType", FADE_NEVER);//失败


TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.SvgView);
 int fadeType = a.getInt(R.styleable.SvgView_fadeType, FADE_NEVER);
 a.recycle();

得这样取值,具体原理没去查,暂时先放着吧


顺带一提,添加attrs.xml的方法我总觉得麻烦,只图简单的话,在布局文件里直接用attsXX=""  然后取值的时候int attsXX = attrs.getAttributeIntValue(null, "attsXX",defaultvalue);

当然咯这样非常不符合规范,看着用咯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值