Android 创建带有文本视图的imageview图像

Android 创建带有文本视图的imageview图像,android,android-edittext,android-imageview,drawingcache,Android,Android Edittext,Android Imageview,Drawingcache,您好,我有一个图像视图在该图像上有编辑文本。我想用EditText创建该imageview的单个图像 我试过这个 editTextOptOneInput.buildDrawingCache(); imageViewOptOne.setImageBitmap(editTextOptOneInput.getDrawingCache()); imageViewOptOne.buildDrawingCache(); Bitmap bitmap1 = imageViewOptOne.getDrawingC

您好,我有一个
图像视图
在该图像上有
编辑文本
。我想用
EditText
创建该
imageview
的单个图像

我试过这个

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

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

您需要获取图像视图的父级的绘图缓存

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

如果parentLayout包含imageviewEditText,我不明白您为什么需要它,但据我所知,在设置为imageview的源之前,您应该从图形缓存创建新的位图对象

,您只能使用1buildDrawingCache(),后续内容将替换先前的内容。
parentLayout.buildDrawingCache();
Bitmap bitmap1 = parentLayout.getDrawingCache();
因此,您最好将EditText和ImageView分组到一个容器中,然后拍摄该容器

或者

不要使用编辑文本,只需使用文本视图即可。
这一个内部可以有一个或多个可拉伸的复合

因此,您可以只拍摄文本视图

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

[编辑]

要使用复合drawables,只需在xml中使用TextView的
android:drawableLeft=“@drawable/your_drawable”
(和/或drawableRight、drawableTop、drawableBottom)属性。
要在Java中设置它们,请使用setCompoundDrawableSwithinInsitCBounds(int left、int top、int right、int bottom),如官方文档中所示:、int、int、int)

提醒:

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

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

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

尝试使用myContainer.buildDrawingCache()
myContainer
是包含EditText和ImageView的布局。删除另外两条冲突的
.buildDrawingCache()
指令。我有一个相对布局,其中多个
Imageview
的可见性已消失。只有一个带有图像的
Imageview
、带有文本的Edittext和另一个带有删除图标的
Imageview
。我不想在我的最终图像中出现删除图标,我该怎么办?对不起,我没有看到它。您可以只使用1
buildDrawingCache()
,后续的图标将替换以前的内容。因此,您最好将EditText和ImageView分组到一个容器中并拍摄该容器。或不要使用EditText,只需使用TextView即可。这一个可以有一个或多个复合拉深内。所以,你可以只拍摄文本视图。@DerGolem非常感谢你的工作。你能分享一些代码或其他相关链接吗?我更新了我的答案,包括对关于复合绘图的官方文件的参考。