今天,我在掘金上摸鱼,忽然微信一响(吓劳资一跳,我还觉得我摸鱼被抓了),原来是一朋友问我个问题,问题是在Dialog的布局文件中宽高设置的match_parent不生效面试
既然比较闲,那就一块儿看看源码呗?微信
示例代码函数
是否是Android在哪设置了,致使没生效,仍是手机问题(百试不爽的锅)?布局
你问我从哪里看?看上面的代码,就一个setContentView方法,那就从这里看呗,其实研究过AC源码的,应该知道这个方法的奥妙了,那就当你没看过吧。学习
这有三个setContentView方法,很少讲,用哪一个,咱们看哪一个3d
咱们须要找这个mWindow,由于能够看到在这调用了setContentView(),而后在这个类中,慢慢找,找啊找 嘻嘻,在Dialog的构造方法找到了 cdn
new了一个PhoneWindow这个类,赋值给了mWindow,那咱们是否是就要到PhoneWindow里面去看setContentView这个函数了?xml
在这函数中setContentView也有三个,老规矩,用哪一个看哪一个blog
第一次看源码,确定是无从下手的,可是规范的命令方式,让你懂代码,哈哈,看源码,很好的学习方式哦。get
咱们来看看这个值,谁给的?反正默认的是false。我找了好久,发如今Dialog构造方法里面有个默认的Theme,你能够去看看,这里我不贴代码了,你能够在themes.xml里看到!
哈哈哈哈,windowIsFloating 这不是mIsFloating设置吗?嗯嗯,为true,而后她就进去了,而后设置了WRAP_CONTENT, WRAP_CONTENT。
这个问题咱们就要看生成的mContentParent了,你会发现他在setContentView中
阅读源码,真的会比较枯燥,可是很打发时间,可是若是阅读源码,不记录点东西,那跟没读同样,好记性不如烂笔头
若是读的不对,要留言给我指出哦,我是个菜鸟,但有好学的心,加油!!!