xml android中无法访问自定义视图属性
Posted
技术标签:
【中文标题】xml android中无法访问自定义视图属性【英文标题】:Custom View attributes are not accessible in xml android 【发布时间】:2015-06-03 13:39:27 【问题描述】:我正在尝试在我的 CustomView 的 xml 中设置 drawable。但它没有显示我的app:enableProgressRes="@drawable/vbequalizer_bg"
或customname:enableProgressRes="@drawable/vbequalizer_bg"
我的意思是不包括自定义属性。当我们点击Ctrl+Space
android:attr 显示。
我已经尝试将这些命名空间一一包含到根布局中。
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:custom="http://schemas.android.com/apk/res-auto"
xmlns:customname="http://schemas.android.com/apk/res/zare.custom.views"
但我的属性无法在 xml 中访问。由他们中的任何一个人
This answer says 在 ADT 17 之后问题已解决。
attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="VolumnBar">
<attr name="disableProgressRes" format="integer" />
<attr name="enableProgressRes" format="integer" />
</declare-styleable>
</resources>
CustomView(VolumeBar) 构造函数
public VolumnBar(Context context, AttributeSet attributeset)
super(context, attributeset);
if(!isInEditMode())
TypedArray a = context.obtainStyledAttributes(attributeset, R.styleable.VolumnBar);//VolumnBar same name as Class Name
try
drawableProgress = a.getDrawable(R.styleable.VolumnBar_disableProgressRes);
drawableInvalidateProgress = a.getDrawable(R.styleable.VolumnBar_enableProgressRes);
catch (Exception e)
finally
a.recycle();
【问题讨论】:
【参考方案1】:可绘制资源的正确格式是reference
,而不是integer
。将您的属性定义更改为以下内容:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="VolumnBar">
<attr name="disableProgressRes" format="reference" />
<attr name="enableProgressRes" format="reference" />
</declare-styleable>
</resources>
【讨论】:
是的,它的正确格式是参考。但我已经使用整数创建了一些自定义视图,它们工作正常。并且在测试你的代码后问题没有解决。以上是关于xml android中无法访问自定义视图属性的主要内容,如果未能解决你的问题,请参考以下文章