无法使用全局定义的自定义属性

时间:2014-08-15 11:14:38

标签: android attributes

所以我定义了一个自定义属性:

<resources>
   <attr name="filterColor" format="color"/>
</resources>

我没有在 中声明它以在其他自定义视图中重复使用它。 但是,我无法像这样使用它

<SomeView
    app:filterColor="@color/my_color"/>

我也无法从AttributeSet

获取它
final TypedArray a = getContext().obtainStyledAttributes(attrs, new int[]{R.attr.filterColor});

这让我发疯了 - 如果我们不能使用它们,为什么我们可以宣布全局自定义属性呢?

1 个答案:

答案 0 :(得分:0)

如果不出意外,您的XML似乎缺少<declare-styleable>元素:

<resources>
  <declare-styleable name="ColorMixer">
    <attr name="color" format="color" />
  </declare-styleable>
</resources>

(从this library project拉出来)

name中的declare-styleable应该是将使用该属性(在您的情况下为SomeView)的视图的类名。

the documentation中介绍了这一点。