[Android] inflate の使い方

BaseAdapterやちょっと複雑なレイアウトしようとすると登場する inflate とは何者なのか?

inflate: 拡張する,膨張させる
[ラテン語inflātus(in-中に+flāre吹く+-tus過去分詞語尾=吹き込む). △DEFLATE]
(ref. goo辞書)
語源からすると中に吹き込む、これが一番意味合いとしてあっているように思います。

 
メインのlayoutに別のレイアウトを動的に挿入することができる
ボタンを押すことで
inflate_text.xml のテキストとinflate_image.xmlで定義された画像を
表示・非表示させるサンプルです
 

inflate_1
inflate_2
inflate_3

Android Studio 2.1
Android 6.0
sponsored link

Inflate を使ってみる

Google Developer: LayoutInflater
3種類の方法があるようです
 

  1. LayoutInflater inflater = this.getLayoutInflater();
  2. LayoutInflater inflater = LayoutInflater.from(Context context);
  3. LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

3番目の例は、GridView などで使います

以下は1番目の例です。

挿入は、
getLayoutInflater
().inflate(R.layout.[挿入するレイアウト], [元のレイアウト]);

削除するには、

inflateLayout.removeAllViews();
 

まとめると
MainActivity.java

 
元になるレイアウトです。
activity_main.xml

 
挿入するテキスト
inflate_text.xml

 
挿入する画像
inflate_text.xml

 

Toast のカスタマイズで使った例