2015-11-13 87 views
1

我做了一個簡單的自定義視圖,「ColorSwatch」。它是圓形的,顯示指定的顏色,如果該顏色具有透明度,則將顏色繪製在檢查器圖案上。視圖正常工作。Android自定義視圖屬性 - '顏色'作爲屬性名稱不允許

我的問題是,當我爲swatch(values/attrs_color_swatch_view.xml)定義自定義屬性時,我無法指定名爲「color」的屬性。編譯器抱怨已經定義了顏色,並指向我的colors.xml文件。作爲一種解決方法,我稱爲參數swatchColor,但我寧願它只是color

文件:values/attrs_color_swatch_view.xml

<resources> 
    <declare-styleable name="ColorSwatchView"> 
     <attr name="swatchColor" format="color"/><!-- would prefer to simply be 'color', not 'swatchColor' --> 
     <attr name="selectionThickness" format="dimension"/> 
     <attr name="isSelected" format="boolean"/> 
     <attr name="selectionColor" format="color"/> 
     <attr name="alphaCheckerSize" format="dimension" /> 
    </declare-styleable> 
</resources> 

是否有使用屬性名稱color的方法嗎?或者它是保留的關鍵字?有沒有辦法命名空間它以某種方式我的看法?

回答

2

由於您不能使用background的原因,您不能使用color。它們已經在android命名空間中定義。

那麼如何使用color或其他任何保留的屬性名?通過使用已經定義的那些,而不是創建新的。

相反的:

<attr name="swatchColor" format="color"/> 

使用本:

<attr name="android:color"/> 

始終確保您使用由Android提供的電源。只有當您認爲它不適合您的需求時,請繼續並創建您自己的屬性。