[Android] 關於LayoutInflater類別

LayoutInflater類別的詳細介紹

LayoutInflater的功能:
LayoutInflater這個class主要功能是將user-defined layout的xml實體化為對應的View物件。有別於setContentView(),可以不用立即將View呈現到UI畫面,讓開發者可依需求在適當的時間或地方呈現出來。


如何取得LayoutInflater?
LayoutInflater本身並無法被直接使用(意即無法Creates a new instance ),因此可藉由以下兩種方法來取得:

第一種方法是由於SystemService已存在一個運作中的standard LayoutInflater instance(hooked up to the current context and device),因此可透過SystemService的方法取出:

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

Or

LayoutInflater inflater = getLayoutInflater(); 

 

第二種方法是透過context本身來取得:

LayoutInflater inflater = LayoutInflater.from(context);

 


如何使用LayoutInflater?
一般比較常用的函式是

View inflate(int resource, ViewGroup root, boolean attachToRoot)

可從特定的xml resource inflate成一個新的view hierarchy。要注意的一點是inflate()是依賴XML 的pre-processing,也就是無法實現runtime的inflate(無法執行時動態改變XML並實體化)。
參數:
    int resource: ID for an XML layout resource to load (e.g., R.layout.main_page)
    ViewGroup root: Optional view to be the parent of the generated hierarchy.
    boolean attachToRoot: Whether the inflated hierarchy should be attached to the root parameter? If false, root is only used to create the correct subclass of LayoutParams for the root view in the XML.

    

Reference:
1. http://developer.android.com/reference/android/view/LayoutInflater.html
2. http://lp43.blogspot.com/2010/06/xmllayoutviewlayoutinflater.html
3. http://blog.csdn.net/hwy584624785/article/details/6695301