【发布时间】:2016-01-15 21:28:40
【问题描述】:
我正在尝试使用我定义的自定义属性将图像放入我的ImageView,我正在这样做:
属性:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<declare-styleable name="MyAttr">
<attr name="my_image" format="reference"/>
</declare-styleable>
</resources>
ImageView 属性:
app:my_image="@drawable/image"
比我的View:
int imageSrc;
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyAttr, 0, 0);
try {
imageSrc = ta.getResourceId(R.styleable.MyAttr_my_image, -1);
} finally {
ta.recycle();
}
并将图像设置为ImageView:
imageView.setImageResource(imageSrc);
但什么也没有出现,我也尝试过:
imageSrcDrawable = ta.getDrawable(R.styleable.MyAttr_my_image);
还有:
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
imageView.setBackgroundDrawable(imageSrcDrawable);
} else {
imageView.setBackground(imageSrcDrawable);
}
更新:
我已经尝试使用ta.getInt(..) 解析属性并且它工作正常!
我不明白为什么,提前谢谢!
【问题讨论】:
-
你为什么不直接使用
android:src="@drawable/image"? -
因为我需要 LinearLayout 自定义类 @petey 的自定义属性
-
这并不能真正解释你为什么不使用ImageView xml attr of
android:src,而且看起来你可能正试图重新发明一个安卓已经给你的轮子。如果不是这种情况,请发布您的自定义 LinearLayout 类。 -
可以,但假设我想做这样的事情?
-
很公平,请发布您的“自定义”视图的完整代码
标签: java android imageview android-attributes