LayoutInflater學習總結

----參考,轉載,借用來源:http://blog.csdn.net/guolin_blog/article/details/12921889佈局

Activity類中onCreate方法中,setContentView()方法,之因此是setContentView,是由於系統會自動在咱們的Activity的佈局文件的最外層包一層FrameLayout,因此方法纔是setContentView,而不是setView,具體原理解析能夠用下面這張圖來表示:.net

而咱們常常在xml佈局文件中設置的layout_width,layout_height 其實相對父佈局而言的,因此咱們最外層的layout_width以及layout_height屬性之因此有效果,是由於系統自動在最外面套了一層FrameLayout。xml

因此在咱們自定義一個view,並添加到當前佈局的時候須要本身手動的傳入一個LayoutParameter,才能設置大小,左右邊距等等屬性。。----待驗證blog

 

2. LayoutInflater的使用方法:資源

  a. LayoutInflater inflater = LayoutInflater.from(context);get

  b. LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);it

a方法是b方法的精簡版原理

 

3.inflate方法的重構重構

  inflater(resouceId,root) : resourceId是指要加載的佈局的資源文件Id,root指的是給該佈局外層再嵌套一個父佈局,若是不須要就直接傳入null。這樣就成功建立了一個佈局的實例,以後再將它動態添加到父佈局中就能夠了。方法

  inflater(resouceId,root,attachToRoot): 前兩個參數和上面同樣:

    a. 若是root爲null,則attachToRoot失去做用,設置成任何值都沒有同樣

    b. 若是root不爲null,attachToRoot爲true,則爲佈局添加一個父佈局,即root

    c. 若是root不爲null,attachToRoot爲false,則會將該佈局的layout_width及layout_height屬性設置成最外層的佈局的兩個屬性一致。即若是最外層是match_parent,那麼該佈局也是match_parent

    d. 不設置attachToRoot,若是root不爲null,則attachToRoot默認爲true;

相關文章
相關標籤/搜索