Android 自定义AlertDialog的写法和弹出软键盘和覆盖状态栏
private void showMyDialog(int layoutId){ AlertDialog myDialog = new AlertDialog.Builder(context).create(); myDialog.show(); Window window = myDialog.getWindow(); window.setContentView(layoutId); window.setGravity(Gravity.CENTER); window.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); }
方法 2
private void showMyDialog(int layoutId){ LayoutInflater inflater = LayoutInflater.from(mContext); View fourView = inflater.inflate(layoutId, null); AlertDialog myDialog = new AlertDialog.Builder(context).create(); myDialog.show(); myDialog.getWindow().setContentView(fourView); }
以上二种方法都可以自定义Dialog,并且效果还不错,但是如果Dialog里面有EditText就会遇到一个问题,怎么样
都打不开软键盘,也就无法输入,如果碰到这种情况的话,请看第三种写法:
方法 3
private void showMyDialog(int layoutId){ LayoutInflater inflater = LayoutInflater.from(mContext); View fourView = inflater.inflate(layoutId, null); AlertDialog myDialog = new AlertDialog.Builder(context).create(); //加上以下这句代码 myDialog.setView(((Activity) mContext).getLayoutInflater().inflate(layoutId, null)) myDialog.show(); myDialog.getWindow().setContentView(fourView); }
全屏覆盖状态栏显示加上以下代码:
window.setType(WindowManager.LayoutParams.TYPE_APPLICATION_PANEL);
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
弹出软键盘:
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.showSoftInput(passwordEt, InputMethodManager.SHOW_FORCED);
隐藏软键盘:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(mPasswordInputEt.getWindowToken(),0);