1. 程式人生 > >經驗總結-談談我對LayoutInflater中inflate方法的認識

經驗總結-談談我對LayoutInflater中inflate方法的認識

我為什麼要寫這篇博文呢,就是自己太以為是了,總認為LayoutInflater這個類沒什麼,只是個用來插入佈局的類而已,但是我每次用到這個類的時候,當呼叫inflate方法插入佈局時,總是對它那幾個過載方法的引數不瞭解,很難下手,所以自己決定把這個方法弄清楚,那現在開始我的博文吧。

inflate的幾個過載方法介紹
inflate根據我的查詢目前有四個過載方法,其中兩個是隻有兩個引數的,另外兩個是三個引數的。兩個引數的方法中有一個方法第一個引數是int型別的,有一個是xmlparser物件。三個引數的方法中也是有一個方法第一個引數是int型別的,有一個是xmlparser物件。本篇博文只侷限於我們常用的第一個引數問int型別的方法。

一、.inflate(int resource,ViewGroup root)解讀
該過載方法一般接收兩個引數,第一個引數就是要載入的佈局id,第二個引數是指給該佈局的外部再巢狀一層父佈局,如果不需要就直接傳null。

二、.inflate(int resource,ViewGroup root,boolean attachToRoot)解讀
此段介紹我只是稍微看了一下原始碼,主要的還是參考了別人的部落格來寫的。如果大家有時間有精力,那就自己去看一下原始碼啦。介紹三個引數的作用:


1.如果root為null,attachToRoot將失去作用,設定任何值都沒有意義。
2.如果root不為null,attachToRoot設為true,則會給載入的佈局檔案的指定一個父佈局,即root。
3.如果root不為null,attachToRoot設為false,則會將佈局檔案外層的父layout屬性進行設定,當該view被新增到父view當中時,這些layout屬性會自動生效。

注:這個解釋非常值得我們去掌握理解,大家如果有時間可以自己去寫佈局檔案進行測試

4.在不設定attachToRoot引數的情況下,如果root不為null,attachToRoot引數預設為true。