Android 自定义视图属性 - 'color' 不允许作为属性名称

Android custom view attributes - 'color' as attribute name disallowed

我制作了一个简单的自定义视图 "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?还是保留关键字?有没有办法以某种方式将它命名为我的观点?

您不能使用 color 的原因与您不能使用 background 的原因相同。它们已在 android 命名空间中定义。

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

而不是:

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

使用这个:

<attr name="android:color"/>

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