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+Spaceandroid: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中无法访问自定义视图属性的主要内容,如果未能解决你的问题,请参考以下文章

Android 自定义属性

Android 自定义视图 XML 中的复杂属性

如何处理 Android 中远程视图的异常(自定义小部件或自定义通知)?

Android:自定义列表视图无法正常工作

android xml,布局中自定义视图的崩溃

在自定义视图中获取android attr