Java Android getAttributeResourceValue始终返回';默认值';

Java Android getAttributeResourceValue始终返回';默认值';,java,android,xml,attributes,Java,Android,Xml,Attributes,我已经创建了一个带有属性的自定义视图,但是我无法从我定义的属性中获取可绘制视图 视图的构造函数如下所示: public DrawingView(Context context, AttributeSet attset) { super(context, attset); foregroundDrawableId = attset.getAttributeResourceValue(R.attr.foreground_drawable_overlay, R.drawable

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

视图的构造函数如下所示:

public DrawingView(Context context, AttributeSet attset) {
      super(context, attset);
      foregroundDrawableId = attset.getAttributeResourceValue(R.attr.foreground_drawable_overlay, R.drawable.gear);
      setupDrawing();
}
<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"/>
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="DrawingView">
        <attr name="foreground_drawable_overlay" format="reference" />
    </declare-styleable>
</resources>
xml如下所示:

public DrawingView(Context context, AttributeSet attset) {
      super(context, attset);
      foregroundDrawableId = attset.getAttributeResourceValue(R.attr.foreground_drawable_overlay, R.drawable.gear);
      setupDrawing();
}
<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"/>
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="DrawingView">
        <attr name="foreground_drawable_overlay" format="reference" />
    </declare-styleable>
</resources>

attrs.xml如下所示:

public DrawingView(Context context, AttributeSet attset) {
      super(context, attset);
      foregroundDrawableId = attset.getAttributeResourceValue(R.attr.foreground_drawable_overlay, R.drawable.gear);
      setupDrawing();
}
<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"/>
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="DrawingView">
        <attr name="foreground_drawable_overlay" format="reference" />
    </declare-styleable>
</resources>

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


如果有人能告诉我我做错了什么,我将不胜感激。

您是否尝试过在其他设备上执行该应用程序?我在EclipseLayout视图中也遇到了同样的问题,但当我在真实设备上测试它时,它工作得很好。 另一个想法可能是,如果您更改了属性的类型,就让R被重新创建,这为我修复了它

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