今天,我在掘金上摸魚,忽然微信一響(嚇勞資一跳,我還覺得我摸魚被抓了),原來是一朋友問我個問題,問題是在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中
閱讀源碼,真的會比較枯燥,可是很打發時間,可是若是閱讀源碼,不記錄點東西,那跟沒讀同樣,好記性不如爛筆頭
若是讀的不對,要留言給我指出哦,我是個菜鳥,但有好學的心,加油!!!