我制作了一个简单的自定义视图,一个“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
?或者它是保留的关键字?有没有办法以某种方式将它命名为我的视图?
答案 0 :(得分:2)
由于您无法使用color
的相同原因,您无法使用background
。它们已经在android命名空间中定义。
那么如何使用color
或任何其他保留的属性名称?通过使用已定义的那些,而不是创建新的。
而不是:
<attr name="swatchColor" format="color"/>
使用它:
<attr name="android:color"/>
始终确保使用android提供的那些。只有当您认为它不符合您的需求时,请继续创建您自己的属性。