看代码一定要细心。
上午看了很长时间研究源码,后来发现其实走了很大弯路,浪费了不少时间,特此记录下来,警示一下。
错误1:代码只是用到了Dialog的对象来创建对话框,而我却去看AlertDialog类的源码<最大的错误>。完全搞不懂状况,就去做事情。
错误2:即使去看了AlertDialog的源码,也应该发现其构造函数全为protected。一点没反应过来,完全不能在外部使用构造函数创建对象,还在分析构造函数。<重大错误>。
因为这两个错误,导致一个上午都在纠结Alertdialog的构造函数是怎样执行的,却忘了这两个问题从一开始就是错的。
最后说一点,创建Dialog或者AlertDialog如果不先指定Theme,创建时系统会使用默认theme,默认theme是非全屏的,(确切的说是这个默认theme使用了一种.9.png背景图片,这个背景图片会有一个边缘空白,导致非全屏,所以想全屏需要重写这个背景属性)而theme是窗体主题,布局是位于窗体主题上的,即我的理解是Theme是优先于Layout的,所以无论怎样设置layout都会导致Dialog总是占不满屏幕。