以前、レイアウトXMLで定義されているウィジェットの取得方法を紹介しました。
今回は、レイアウトXML自体をソースコード上にViewとして取得する方法を紹介します。
レイアウトXMLを取得するには LayoutInflater#inflateメソッドを使用します。
そこで、まず最初にContextから LayoutInflaterクラスを取得するのですが、なんと3種類の方法があります。
※ 以下のソースコードは Activityクラス内で呼ばれています。
レイアウトXMLから取得したビューを画面に反映させるには以下のコードになります。
リソースIDで指定した方が簡単に済む!
と思うかもしれませんが、Viewクラスとして取得することでできることもあります。
たとえば、独自のリストビューを作ったり、ダイアログに設定したり。
他にも色々使いどころはあるので覚えておきましょう。
今回は、レイアウトXML自体をソースコード上にViewとして取得する方法を紹介します。
レイアウトXMLを取得するには LayoutInflater#inflateメソッドを使用します。
そこで、まず最初にContextから LayoutInflaterクラスを取得するのですが、なんと3種類の方法があります。
※ 以下のソースコードは Activityクラス内で呼ばれています。
// コンテキストから取得このように複数の方法がありますが、結果はどれも同じです。
LayoutInflater inflater1 = LayoutInflater.from(this);
// アクティビティから取得
LayoutInflater inflater2 = getLayoutInflater();
// システムサービスから取得
LayoutInflater inflater3 = (LayoutInflater)
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
レイアウトXMLから取得したビューを画面に反映させるには以下のコードになります。
// レイアウトインフレーターを取得最後のビューを画面に反映する処理は、リソースIDを指定する setContentView(R.layout.main) と同じ結果になります。
LayoutInflater inflater1 = LayoutInflater.from(this);
// レイアウトXMLからビューを取得
View view = inflater.inflate(R.layout.main, null);
// ビューを画面に反映
setContentView(view);
リソースIDで指定した方が簡単に済む!
と思うかもしれませんが、Viewクラスとして取得することでできることもあります。
たとえば、独自のリストビューを作ったり、ダイアログに設定したり。
他にも色々使いどころはあるので覚えておきましょう。
スポンサーサイト