【问题标题】:Android custom view attributes - 'color' as attribute name disallowedAndroid 自定义视图属性 - 不允许将“颜色”作为属性名称
【发布时间】:2015-11-13 18:31:47
【问题描述】:

我制作了一个简单的自定义视图,即“ColorSwatch”。它是圆形的,显示指定的颜色,如果该颜色具有透明度,则该颜色将绘制在棋盘格图案的顶部。该视图工作正常。

我的问题是,当我为样本定义自定义属性时(在values/attrs_color_swatch_view.xml 中),我无法指定名为“颜色”的属性。编译器抱怨颜色已经定义,并指向我的 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?还是保留关键字?有没有办法在我看来以某种方式命名它?

【问题讨论】:

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


    【解决方案1】:

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

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

    而不是:

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

    使用这个:

    <attr name="android:color"/>
    

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

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多