/**
* 在dialog.show()前调用此方法
*
* @param mView dialog要显示的view
*/
private void setDialogSize(final View mView) {
mView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop,
int oldRight, int oldBottom) {
int heightNow = v.getHeight();//dialog当前的高度
int widthNow = v.getWidth();//dialog当前的宽度
int needWidth = (int) (getWindowManager().getDefaultDisplay().getWidth() * 0.7);//最小宽度为屏幕的0.7倍
int needHeight = (int) (getWindowManager().getDefaultDisplay().getHeight() * 0.6);//最大高度为屏幕的0.6倍
if (widthNow < needWidth || heightNow > needHeight) {
if (widthNow > needWidth) {
needWidth = FrameLayout.LayoutParams.WRAP_CONTENT;
}
if (heightNow < needHeight) {
needHeight = FrameLayout.LayoutParams.WRAP_CONTENT;
}
mView.setLayoutParams(new FrameLayout.LayoutParams(needWidth,
needHeight));
}
}
});
}
/**
*自定义dialog布局
*/
//1.创建一个Dialog对象,如果是AlertDialog对象的话,弹出的自定义布局四周会有一些阴影,效果不好
Dialog mDialog = new Dialog(this);
//去除标题栏
mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
//2.填充布局
LayoutInflater inflater = LayoutInflater.from(this);
View dialogView = inflater.inflate(R.layout.dialog_danwei, null);
//将自定义布局设置进去
mDialog.setContentView(dialogView);
//3.设置指定的宽高,如果不设置的话,弹出的对话框可能不会显示全整个布局,当然在布局中写死宽高也可以
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
Window window = mDialog.getWindow();
lp.copyFrom(window.getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
//注意要在Dialog show之后,再将宽高属性设置进去,才有效果
mDialog.show();
window.setAttributes(lp);
//设置点击其它地方不让消失弹窗
mDialog.setCancelable(false);
initDialogListener();