[英]Background image shows a black bottom bar when soft keyboard is visible
我有一个Android应用程序,我想在其中输入密码,如果正确,请转到新活动。 为此,我显示了一个带有EditText字段的自定义对话框。如果密码正确,则隐藏kayboard并转到下一个活动。我使用以下代码隐藏键盘
alertBuilder.setNeutralButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
new Thread(new Runnable() {
@Override
public void run() {
//start new acivity for result
}
}).start();
}
});
并在对话框的OK按钮的onClick中的线程内使用startActivityForResult(intent,requestCode)加载下一个活动。但是在加载下一个活动之前,隐藏键盘后,背景图像显示黑色底条,例如
回到该活动后,背景图像会暂时显示。 我尝试了intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 并在清单文件中为此活动设置android:windowSoftInputMode =“ adjustPan” 。 它对我不起作用。这是什么问题,又怎么解决呢?
提前致谢
关闭键盘后,请稍稍延迟一下,然后再运行一下,以使Activity的背景有一段时间可以重新绘制。
使用Handler
程序等待较小的延迟,然后返回到UI线程。
将此添加到您的班级 :
private Handler mHandler = new Handler();
定义一个Runnable :
private Runnable mRunnable = new Runnable() {
public void run() {
startActivityForResult(intent, resultCode);
}
};
更新您的代码 :
alertBuilder.setNeutralButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
// Wait a moment and jump to the next activity.
mHandler.postDelayed(mRunnable, 500);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.