戌印-INUJIRUSHI- (Androidあれこれ)

Androidのプログラミングをメインにしてます。記事に貼られたソースコードはダブルクリックすることで行番号をはずしてコピーすることができます。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
08

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

レイアウトXMLをViewとして取得

以前、レイアウトXMLで定義されているウィジェットの取得方法を紹介しました。

今回は、レイアウト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から取得したビューを画面に反映させるには以下のコードになります。
// レイアウトインフレーターを取得
LayoutInflater inflater1 = LayoutInflater.from(this);

// レイアウトXMLからビューを取得
View view = inflater.inflate(R.layout.main, null);

// ビューを画面に反映
setContentView(view);
最後のビューを画面に反映する処理は、リソースIDを指定する setContentView(R.layout.main) と同じ結果になります。

リソースIDで指定した方が簡単に済む!
と思うかもしれませんが、Viewクラスとして取得することでできることもあります。
たとえば、独自のリストビューを作ったり、ダイアログに設定したり。

他にも色々使いどころはあるので覚えておきましょう。
スポンサーサイト

Comments

参考にさせていただきました
レイアウトXMLをViewとして取得する方法を調べていて本サイトに辿り着き
参考にさせていただきました。
ありがとうございました。

Leave a Comment


Body
プロフィール

とむ・やむくん

Author:とむ・やむくん
管理人について

Windows 7 / 64bit
Eclipse 4.2 Juno (日本語パッチ済)

スポンサーサイト
最新トラックバック
検索フォーム
ブロとも申請フォーム
QRコード
QR
Twitter
2013/01/04 19:00 カウント開始

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。