可在内部dialog方法的dialog.show();后面加入下面的调用方法,传入弹窗中的EditText 对象,可使dialog和输入法同时显示,dialog的dismiss();调用时同时隐藏输入法,不用判断其他键盘条件。
//关闭软键盘
public static void autoSoftInput(Dialog dialog, EditText editText) {
//解决dilaog中EditText无法弹出输入的问题
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
//弹出对话框后直接弹出键盘
editText.setFocusableInTouchMode(true);
editText.requestFocus();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager inputManager = (InputMethodManager) editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(editText, 0);
}
}, 100);
}
/**
* 弹框
* 在dialog.show();后调用那个方法
* 1.可实现弹出弹框后弹出软键盘
* 2.可实现弹框dismiss时自动隐藏软键盘
*/
public static Dialog showExchangeNumDialog(final Context context) {
View view = View.inflate(context, R.layout.dialog_exchange_num, null);
final Dialog dialog = new Dialog(context, R.style.Dialog_Theme_Transparent);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(view);
Window window = dialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.width = (int) (window.getWindowManager()
.getDefaultDisplay()
.getWidth() * 0.8);
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
window.setAttributes(lp);
dialog.setCancelable(false);
dialog.show();
.
.
.
EcologyUtils.autoSoftInput(dialog, et_value);
.
.
.
return dialog;
}