LayoutInflater的inflate函數使用方法

LayoutInflater做用是將layoutxml佈局文件實例化爲View類對象。小程序

獲取LayoutInflater的方法有以下三種:函數

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

View layout = inflater.inflate(R.layout.main, null);this

 

LayoutInflater inflater = LayoutInflater.from(context); (該方法實質就是第一種方法,可參考源代碼)spa

View layout = inflater.inflate(R.layout.main, null);code

 

LayoutInflater inflater = getLayoutInflater();(在Activity中能夠使用,其實是View子類下window的一個函數)orm

View layout = inflater.inflate(R.layout.main, null);xml

一直有點糾結setContentViewinflate的區別找了一些資料。寫了個小程序看了下:對象

public class MyInflate extends Activity{資源

    private TextView tv;

    public void OnCreate(Bundle savedInstanceState){

        super.onCreate(savedInstanceState);

        //setContentView(R.layout.main);

        //tv = (TextView) findViewById(R.id.tv);

 

        LayoutInflater inflate = LayoutInflater.from(this);

        View view = inflate.inflate(R.layout.main,null);

        setContentView(view);

    }

}

上述註釋掉的代碼和沒有註釋掉的代碼兩種狀況是相同的。

區別:
setContentView()
一旦調用, layout就會馬上顯示UI;而inflate只會把Layout造成一個以view類實現成的對象,有須要時再用setContentView(view)顯示出來。通常在activity中經過setContentView()將界面顯示出來,可是若是在非activity中如何對控件佈局設置操做了,這就須要LayoutInflater動態加載。

public View inflate(int Resourece,ViewGroup root)
做用:填充一個新的視圖層次結構從指定的
XML資源文件中
reSource
ViewlayoutID
root
 生成的層次結構的根視圖
return 
填充的層次結構的根視圖。若是參數root提供了,那麼root就是根視圖;不然填充的XML文件的根就是根視圖。

其他幾個重載的inflate函數相似。

相關文章
相關標籤/搜索