2015-06-03 91 views
1

我試圖設置在我的CustomView的xml中可繪製。但它不顯示我的app:enableProgressRes="@drawable/vbequalizer_bg"customname:enableProgressRes="@drawable/vbequalizer_bg"xml無法訪問自定義視圖屬性android

我的意思是自定義屬性不包括在內。當我們點擊Ctrl+Space android:attr shows。

而且我已經試過將這些命名空間逐個包含到根佈局中。

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(); 
     } 
    } 
} 

回答

0

d的正確格式可開源的資源是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> 
+0

是的正確格式是引用。但我已經使用整數創建了一些自定義視圖,並且它們工作正常。經過測試,你的代碼問題沒有解決。 – Nepster

+0

您還可以參閱http://stackoverflow.com/a/6108156/3496570 – Nepster