AndroidのInflateの使い方

2019年5月17日

FragmentにfindviewbyIdをする前に行うInfalteとはどのような役割があり、

どう使うのかを本稿で説明していきます。

 

 

Inflateとは?

Inflateの和訳としては、膨張させる、拡張するなどの意味がありますが、

Androidでは、指定したxmlのViewリソースを使用する仕組みのことです。

 

Inflateの使い方

xmlからViewを作成するには直接インスタンス化するのではなく、

getLayoutInflater()やLayoutInflater を使用します。

ActivityとFragmentでそれぞれ使用方法が異なりますので使い方を見てきましょう。

 

ActivityでInflateを使用する方法

getLayoutInflater()を使用してviewを作成していきますので、

getLayoutInflater()の使い方をみていきましょう。

 

下記のactivity_main.xmlにLinearLayoutを作成していきます。

linear_layout2にはViewが定義されていないので、何も表示されません。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    android:id="@+id/linear_layout1"
    ...>
    <Button
... />
 
    <LinearLayout
        android:id="@+id/linear_layout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" />
 
    <TextView
... />
 
</LinearLayout>

 

idがlinear_layout2の箇所にinflateを使用して

別のxmlファイルをviewとして割り当てます。

inflate_layout.xml

<LinearLayout
    ... >
 
    <ImageView
        ..."/>
 
</LinearLayout>

 

Activityの中で下記のようにinflateを使用します。

これで特定の動作をしたときにactivity_main.xmlのlinear_layout2の箇所に、

inlate_layout.xmlで定義したxmlがviewとして拡張(inflate)されます。

MainActivity.java

LinearLayout linearLayout = findViewById(R.id.inflate_layout2);
// inflate
getLayoutInflater().inflate(R.layout.inflate_layout, linearLayout);