Android自定义视图属性 - 不允许使用“颜色”作为属性名称

时间:2015-11-13 18:31:48

标签: android android-custom-view android-xml

我制作了一个简单的自定义视图,一个“ColorSwatch”。它是圆形的,显示指定的颜色,如果该颜色具有透明度,则在检查器图案上绘制颜色。视图工作正常。

我的问题是,当我为样本定义自定义属性时(在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?或者它是保留的关键字?有没有办法以某种方式将它命名为我的视图?

1 个答案:

答案 0 :(得分:2)

由于您无法使用color的相同原因,您无法使用background。它们已经在android命名空间中定义。

那么如何使用color或任何其他保留的属性名称?通过使用已定义的那些,而不是创建新的。

而不是:

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

使用它:

<attr name="android:color"/>

始终确保使用android提供的那些。只有当您认为它不符合您的需求时,请继续创建您自己的属性。