LayoutInflater inflater = LayoutInflater
.from(CashCaptureActivity.this);
LinearLayout layout = (LinearLayout) inflater.inflate(
R.layout.vip_mode_layout, null);
final EditText addStockNumEt = (EditText) layout
.findViewById(R.id.edit_text);
Button firmBtn = (Button) layout
.findViewById(R.id.btn_dialog_firm);
Button cancleBtn = (Button) layout
.findViewById(R.id.btn_dialog_give_up);
mVipModeDialog = new AlertDialog.Builder(
CashCaptureActivity.this).create();
mWaringTv = (TextView) layout.findViewById(R.id.waring_tips);
mWaringTv.setVisibility(View.INVISIBLE);
mVipModeDialog.setView(layout);
mVipModeDialog.setCancelable(true);
firmBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String code = addStockNumEt.getText().toString();
if (StringUtils.isEmpty(code)) {
mWaringTv.setVisibility(View.VISIBLE);
return;
}
if (mMemberDetailPresenter == null) {
mMemberDetailPresenter = new MemberDetailPresenter(CashCaptureActivity.this, CashCaptureActivity.this, getPackageName());
mMemberDetailPresenter.loadByCode(code, true);
} else {
mMemberDetailPresenter.loadByCode(code, true);
}
}
});
cancleBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AppApplication.getInstance().setInputMethodManager(false, addStockNumEt);
mVipModeDialog.dismiss();
}
});
mVipModeDialog.setOnShowListener(new DialogInterface.OnShowListener() { //当dialog弹出时调出输入键盘 但当编辑框没完全显示时不能保证弹出输入键盘
@Override
public void onShow(DialogInterface dialog) {
runOnUiThread(new Runnable() {
@Override
public void run() {
AppApplication.getInstance().setInputMethodManager(true, addStockNumEt);//弹出输入法键盘
}
});
}
});
addStockNumEt.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { //当发现编辑框完全画完显示时调用
@Override
public void onGlobalLayout() {//该段代码中去监听edittext是否被绘制完毕,如果绘制完毕则调用onGlobalLayoutListener.onGlobalLayout函数,在该函数中去显示键盘,运行下
AppApplication.getInstance().setInputMethodManager(true, addStockNumEt); //弹出输入法键盘
}
});
mVipModeDialog.show();
弹输入键盘:
/**
* 打开输入法
*
* @param isOpenInput
*/
public void setInputMethodManager(boolean isOpenInput, EditText editText) {
InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
if (isOpenInput) {
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);//强制显示
} else {
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); //强制隐藏键盘
}
}
效果显示: