Android getAttributeResourceValue始终返回'默认值'

时间:2015-03-27 13:30:10

标签: java android xml attributes

我已经创建了一个带有属性的自定义视图,但我无法从我定义的属性中获取可绘制的内容。

View的构造函数如下所示:

public DrawingView(Context context, AttributeSet attset) {
      super(context, attset);
      foregroundDrawableId = attset.getAttributeResourceValue(R.attr.foreground_drawable_overlay, R.drawable.gear);
      setupDrawing();
}

xml看起来像这样:

<no.flammbaert.flammbaert.DrawingView
    android:id="@+id/drawing"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_marginBottom="3dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:layout_marginTop="3dp"
    android:layout_weight="1"
    android:background="#FFFFFFFF"
    app:foreground_drawable_overlay="@drawable/fargespill_bg_bjorn"/>

attrs.xml看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="DrawingView">
        <attr name="foreground_drawable_overlay" format="reference" />
    </declare-styleable>
</resources>

但是当我运行它时,它总是从getAttributeResourceValue返回默认值。

如果有人能告诉我我做错了什么,真的很感激。

1 个答案:

答案 0 :(得分:0)

您是否尝试在其他设备上执行该应用?我在eclipse布局视图中遇到了同样的问题但是当我在真实设备上测试它时,它运行得很好。 另一个想法可能是,如果你改变了attribut的类型,那就让R重新创建,为我修复它

我知道,这篇文章很老了,但对于任何找到它的人,我希望我能帮到你