我正在进行丝网印刷并将其作为电子邮件附件发送。然而,通常丝网印刷具有空的底部区域,大约是软键盘的尺寸。但是,我在屏幕截图之前隐藏了键盘,并且在屏幕上看不到它。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_mail:
hideKeyboard();
View v = getWindow().getDecorView().getRootView();
v.setDrawingCacheEnabled(true);
myBitmap = v.getDrawingCache();
saveBitmap(myBitmap);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void saveBitmap(Bitmap bitmap) {
String filePath = Environment.getExternalStorageDirectory()
+ File.separator + Consts.SCREENSHOT_PATH_FILENAME;
File imagePath = new File(filePath);
FileOutputStream fos;
try {
fos = new FileOutputStream(imagePath);
bitmap.compress(CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
sendMail(filePath);
} catch (FileNotFoundException e) {
Log.e("GREC", e.getMessage(), e);
} catch (IOException e) {
Log.e("GREC", e.getMessage(), e);
}
}
public void hideKeyboard() {
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm =(InputMethodManager getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
然后将其作为电子邮件附件发送。任何想法如何摆脱屏幕上的软键盘大小的空白打印?
答案 0 :(得分:1)
好的,以下似乎有效。紧接着这一行:
View v = getWindow().getDecorView().getRootView();
我补充说:
v.invalidate();
我不能发誓这可以解决问题,但是在进行此更改后问题仍未再次发生。在过去,在隐藏键盘和创建位图之后,屏幕似乎并不总是被重新绘制,在键盘屏幕上留下了一个“空”点。