女神镇楼
在开发过程中有时候会有这样的需求:弹出一个dialog,里面有输入框,但是一般点击EditText是不会弹出软键盘的,这就很尴尬了,所以就需要解决这个问题了。
如图:
解决方法如下:
如图:
解决方法如下:
/**
* 显示弹窗
*/
public static void showCouponDialog2(final Context context, final Handler handler, final int MsgWhatCancel, final int MsgWhatSure){
final AlertDialog dialog = new AlertDialog.Builder(context).create();
dialog.show();
View view = LayoutInflater.from(context).inflate(R.layout.dialog_show, null);
Window window = dialog.getWindow();
window.setContentView(view);
window.setBackgroundDrawable(new ColorDrawable(0));
WindowManager.LayoutParams lp = window.getAttributes();
lp.width = (int)(CommonUtil.getScreenWidth(context) * 0.8);
window.setAttributes(lp);
dialog.setCanceledOnTouchOutside(false);
//使edittext可以弹出键盘
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
final EditText et_RedeemCode = (EditText) view.findViewById(R.id.et_RedeemCode);
TextView tv_cancel = (TextView) view.findViewById(R.id.tv_cancel);
TextView tv_ok = (TextView) view.findViewById(R.id.tv_ok);
tv_cancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (handler != null) {
handler.sendEmptyMessage(MsgWhatCancel);
}
dialog.dismiss();
}
});
tv_ok.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (TextUtils.isEmpty(et_RedeemCode.getText().toString().replace(" ", ""))) {
Toast.makeText(context, "请输入优惠券兑换码", Toast.LENGTH_SHORT).show();
return;
}
if (handler != null) {
Message msg = handler.obtainMessage();
msg.obj = et_RedeemCode.getText().toString().replace(" ", "");
msg.what = MsgWhatSure;
handler.sendMessage(msg);
}
dialog.dismiss();
}
});
}
这样就可以了。欢迎交流。