我有一个以编程方式创建的ImageView。我想将整个imageView作为drawable。当我这样做时,我得到空的回复
private Drawable getDrawable(Data data) {
ImageView image = new ImageView(context);
image.setBackground(data.getColor());
image.setImageDrawable(data.getIcon());
return image.getDrawable();
}
现在,我还怀疑我的方法只返回imageView的可绘制部分,没有背景。
如何将整个ImageView作为可绘制的?
更新
以下情况仍无效:
private Drawable getDrawable(Data data) {
ImageView image = new ImageView(context);
image.setBackground(data.getColor());
image.setImageDrawable(data.getIcon());
image.setDrawingCacheEnabled(true);
image.buildDrawingCache();
Drawable drawable = new BitmapDrawable(context.getResources(), image.getDrawingCache());
image.setDrawingCacheEnabled(false);
return drawable;
}
答案 0 :(得分:1)
我很确定这有效,但我自己没有测试过。尝试使用image.getDrawingCache()
获取Bitmap
呈现的View
。您可能需要使用image.setDrawingCacheEnabled(true)
启用绘图缓存。在那里,您可以使用BitmapDrawable
将Bitmap
转换为Drawable
类型。以下是绘制缓存中Android documentation的一些信息。 here是关于BitmapDrawable
的一些信息。
答案 1 :(得分:0)
在致电image.buildDrawingCache()
之前,您需要测量并布局图像。您可以尝试使用代码。
int ws = MeasureSpec.makeMeasureSpec(imageWidth, MeasureSpec.EXACTLY);
int hs = MeasureSpec.makeMeasureSpec(imageHeight, MeasureSpec.EXACTLY);
image.measure(ws, hs);
image.layout(0, 0, image.getMeasuredWidth(), image.getMeasuredHeight());