Dialog设置大小为什么需要在setContentView方法之后?
Dialog设置大小实际也是通过 WindowManager.LayoutParams 中的width,height属性控制
但是我们看到Dialog内部关联的Window(PhoneWindow)的WindowManager.LayoutParams的width,heigh默认值都是MATCH_PARENT,可当我们setContentView之后就变成了WRAP_CONTENT了呢?带着疑问我们我们追踪源码
首先看到Dialog默认关联的Window
Dialog(@NonNull Context context, @StyleRes int themeResId, boolean createContextThemeWrapper) {
//...省略
final Window w = new PhoneWindow(mContext);
//...省略
}
PhoneWindow 继承Window
Window的WindowManager.LayoutParams默认构造(width,height都是 MATCH_PARENT)
接着在看为什么setContentView之后会变了呢