创建具有textview的imageview图像

时间:2014-12-10 14:26:37

标签: android android-edittext android-imageview drawingcache

我在该图片上有imageview EditText。我想使用imageview创建EditText的单个图片。

我试过这个,

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

但将我的图像变为黑色,因为我的文字颜色为黑色(我猜)。

4 个答案:

答案 0 :(得分:2)

您只能使用 1 buildDrawingCache(),后续的替换以前的内容。
所以,你最好将EditText和ImageView分组到容器中并拍摄那个。

... OR

不使用EditText,只需使用TextView 这个内部可以有一个或多个复合可绘制

所以,你可以只拍摄TextView。

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

<强> [编辑]

要使用复合drawable,只需在xml中使用TextView的android:drawableLeft = "@drawable/your_drawable"(和/或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)

答案 1 :(得分:0)

您需要获取 imageview &amp;的的绘图缓存的 的EditText

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

parentLayout 包含 imageview &amp;的 的EditText

答案 2 :(得分:0)

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

答案 3 :(得分: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