本文總結(jié)來(lái)自鴻洋大神博客 http://blog.csdn.net/lmj623565791/article/details/38171465
inflate常用的方法有兩個(gè):
1、inflate(layoutId, null )
2、inflate(layoutId, root, false ) ?參數(shù):布局id, 副布局view, ?是否添加到該布局
有四種調(diào)用情況(第二個(gè)接口的root為空時(shí)跟第一個(gè)接口一致)
a、inflate(layoutId, null ) ?
b、inflate(layoutId, root )
c、inflate(layoutId, root, false )
d、inflate(layoutId, root, true )
經(jīng)代碼驗(yàn)證后結(jié)果如下:
a、不能正確地處理layoutId寬和高, 因?yàn)椋簂ayout_width,layout_height是相對(duì)了父級(jí)設(shè)置的,而root為null
b、當(dāng)root不為Null時(shí),情況b等同于情況d
c、可以正確處理layoutId寬和高,因?yàn)閠emp.setLayoutParams(params);這個(gè)params正是root.generateLayoutParams(attrs);得到的。
d、不僅能夠正確的處理,而且已經(jīng)把layoutId這個(gè)view加入到了parent,并且返回的是parent即root