全屏Dialog
/**
* 完美全屏Dialog
*/
private void dialog() {
final Dialog dlg = new Dialog(getContext()/*, R.style.Theme_AppCompat_Dialog*/);
dlg.setCanceledOnTouchOutside(true);
dlg.show();
Window window = dlg.getWindow();
// window.setWindowAnimations(R.style.Theme_AppCompat_Dialog);
window.setContentView(R.layout.dialog_test);
((Window) window).setBackgroundDrawable(new BitmapDrawable());
//设置alterdialog全屏
WindowManager windowManager = getActivity().getWindowManager();
Display display = windowManager.getDefaultDisplay();
WindowManager.LayoutParams lp = dlg.getWindow().getAttributes();
lp.height = (int)(display.getHeight()); //设置宽度
lp.width = (int)(display.getWidth()); //设置宽度
dlg.getWindow().setAttributes(lp);
}
屏幕底部Dialog
//Dialog 靠下
private void dialogBottom() {
final Dialog dlg = new Dialog(getContext()/*, R.style.Theme_AppCompat_Dialog*/);
dlg.setCanceledOnTouchOutside(true);
dlg.show();
//必须要在show 之后设置全屏 才有效 具体为什么 需要看源码
Window window = dlg.getWindow();
// window.setWindowAnimations(R.style.Theme_AppCompat_Dialog);
window.setContentView(R.layout.dialog_bottom_test);
//一定要设置背景 不然会出现padding 等
((Window) window).setBackgroundDrawable(new ColorDrawable(0x00000000));
//设置alterdialog全屏
WindowManager windowManager = getActivity().getWindowManager();
Display display = windowManager.getDefaultDisplay();
WindowManager.LayoutParams lp = dlg.getWindow().getAttributes();
lp.height = WindowManager.LayoutParams.MATCH_PARENT; //设置宽度
// lp.width = (int)(display.getWidth()); //设置宽度
lp.width = WindowManager.LayoutParams.MATCH_PARENT; //设置宽度
lp.gravity = Gravity.BOTTOM;
dlg.getWindow().setAttributes(lp);
//Dialog 靠下
}
AlertDialog 和 Dialog 有什么区别?
AlertDialg 一般用于下面有确定和取消按钮的场景,Dialog 用于没有确定和取消的按钮场景,比如加载中的进度条。