我必须将文本字段的整个文本打印到图片中。原因是:我必须在Android和其他Web客户端之间使用不支持的UTF-8字符交换消息。对于不支持的UTF-8字符,我的意思是在Android中缺少字体(请参阅this topic here)。我尝试使用直接方法
Bitmap b;
EditText editText = (EditText) findViewById(R.id.editText);
editText.buildDrawingCache();
b = editText.getDrawingCache();
editText.destroyDrawingCache();
在我有多行之前就像魅力一样:解决方案只捕获用户可见的文本,而不是长文本字段内的完整文本(滚动条!)。
我还尝试了generating a picture from a stackoverflow answer的另一种解决方法。这会打印整个文本,但不会像新行一样尊重文本格式。但我不想自己处理所有这些事情。
我被迫使用Android 4.3及更早版本。
答案 0 :(得分:3)
在寻找解决方案的另外24小时后,我跑了into this solution for a Webview。诀窍是
以下是代码:
EditText editText = (EditText) findViewById(R.id.editText);
TextView textView = new TextView(this.getApplicationContext());
textView.setTypeface(editText.getTypeface());
textView.setText(editText.getText());
textView.measure(
View.MeasureSpec.makeMeasureSpec(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
textView.layout(0, 0, textView.getMeasuredWidth(), textView.getMeasuredHeight());
textView.setDrawingCacheEnabled(true);
textView.buildDrawingCache();
Bitmap b = textView.getDrawingCache().copy(Bitmap.Config.ARGB_8888, false);
textView.destroyDrawingCache();
try{
String path = Environment.getExternalStorageDirectory().toString() + "/picture.png";
OutputStream outputStream = new FileOutputStream(new File(path));
b.compress(Bitmap.CompressFormat.PNG, 0, outputStream);
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}