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 提供的那些。只有当您认为它不适合您的需求时,才可以继续创建您自己的属性。
我制作了一个简单的自定义视图 "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 提供的那些。只有当您认为它不适合您的需求时,才可以继续创建您自己的属性。