我已经创建了一个带有属性的自定义视图,但我无法从我定义的属性中获取可绘制的内容。
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返回默认值。
如果有人能告诉我我做错了什么,真的很感激。
答案 0 :(得分:0)
您是否尝试在其他设备上执行该应用?我在eclipse布局视图中遇到了同样的问题但是当我在真实设备上测试它时,它运行得很好。 另一个想法可能是,如果你改变了attribut的类型,那就让R重新创建,为我修复它
我知道,这篇文章很老了,但对于任何找到它的人,我希望我能帮到你