1

嗨,对那个图像imageview有兴趣。EditText我想imageviewEditText.

我试过这个,

editTextOptOneInput.buildDrawingCache();
imageViewOptOne.setImageBitmap(editTextOptOneInput.getDrawingCache());
imageViewOptOne.buildDrawingCache();
Bitmap bitmap1 = imageViewOptOne.getDrawingCache();

但是将我的图像更改为黑色,因为我的文本颜色是黑色(我猜)。

4

4 回答 4

2

您可以只使用1 个buildDrawingCache(),后续的将替换之前的内容。
因此,您最好将 EditText 和 ImageView 组合到一个容器中并拍摄那个容器。

或者...

而不是使用 EditText,只需使用 TextView。
这个里面可以有一个或多个可绘制的化合物

因此,您只能拍摄 TextView。

这是一个首选的解决方案,因为它减少了视图和(可能)布局计数。

[编辑]

要使用复合可绘制对象,只需在 xml 中使用android:drawableLeft = "@drawable/your_drawable"TextView 的(和/或 drawableRight、drawableTop、drawableBottom)属性。
要在 Java 中设置它们,请使用setCompoundDrawablesWithIntrinsicBounds(int left, int top, int right, int bottom)官方文档中的 : http://developer.android.com/reference/android/widget/TextView.html#setCompoundDrawablesWithIntrinsicBounds(int , int, int, int)

于 2014-12-10T14:47:49.477 回答
0

提醒:

如果您从屏幕捕获结果图像+文本,则输出图像的质量肯定会受到影响

如果你想保持图像的原始质量,你应该使用 Canvas 和 Bitmap 来帮助你

Canvas c=new Canvas();
c.setBitmap(bitmap);   // *mutable* copy of bitmap of the image for the ImageView
c.drawText(text,  x,  y,  paint);  // font size and typeface can be set through "Paint" class

bitmap.compress(CompressFormat.PNG, 100, new FileOutputStream(out)); // export output
于 2014-12-10T16:23:51.173 回答
0

您需要获取该imageviewEditText级的绘图缓存。

parentLayout.buildDrawingCache();
Bitmap bitmap1 = parentLayout.getDrawingCache();

其中parentLayout包含imageviewEditText

于 2014-12-10T14:40:20.183 回答
0

我不明白你为什么需要它,但据我所知,你应该在设置为 ImageView 的源之前从绘图缓存创建新的 Bitmap 对象

于 2014-12-10T14:40:49.057 回答