我們平常通過xml編寫的布局是如何轉(zhuǎn)換成android中的一個(gè)View對象從而顯示在應(yīng)用程序中的呢?這就是LayoutInflater.
setContentView底層原理也是通過LayoutInflater。
它將xml布局轉(zhuǎn)換成一個(gè)View對象分為兩步:
1 通過解析器將xml文件中的內(nèi)容解析出來。
2 使用反射將解析出來的元素創(chuàng)建成View對象试疙。
接下來看使用反射創(chuàng)建View對象的代碼片段。
利用反射構(gòu)造函數(shù)器newInstance創(chuàng)建對象
使用的幾種方式:
1 第一種不指定root布局傳為空 然后調(diào)用addView方法
這種時(shí)候buttonLayout所有的layout開頭的屬性都失效,改變寬高沒作用翰舌。
2 第二種 指定父布局 第三個(gè)參數(shù)傳false 這種后面調(diào)用addView方法正常使用。
3 第三種?指定父布局 第三個(gè)參數(shù)傳true 這種后面不需要調(diào)用addView方法冬骚。否則會(huì)報(bào)錯(cuò)椅贱。