系统提供的Dialog有时不能满足实际开发的要求,此时自定义是一个不错的注意!当我们继承Dialog来实现自己的对话框时,发现自定义Dialog的实际大小我们希望的大小存在差别!解决这个问题的方法之一是在恰当时机改变Dialog的大小!至于为什么需要这样一个恰当的时机,需要从Dialog显示的源码去理解,在此不做说明!
主要代码如下:
public void resize(Context context, Dialog dialog) {
WindowManager m = ((Activity) context).getWindowManager();
Display display = m.getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Window window = dialog.getWindow();
LayoutParams layoutParams = window.getAttributes();
layoutParams.height = (int) (height * 0.8);
layoutParams.width = (int) (width * 0.8);
window.setAttributes(layoutParams);
}
说明:
- 代码的逻辑是首先获得屏幕的宽和高,然后获得对话框的LayoutParams,并修改其宽和高;
- Dialog dialog:当前需要修改大小的Dialog;
- Context context:显示当前对话框的Activity;
调用时机:
如果在show以后调用,可以看到修改大小后的对话框!