web-dev-qa-db-ja.com

xmlファイルからビューを膨張させるとはどういう意味ですか?

私はAndroid開発の初心者であり、レイアウトxmlファイルからのInflatingビューへの参照に出くわし続けています。私はグーグルで開発ガイドを検索しましたが、それが何を意味するのか感覚をつかむことができませんでした。誰かが非常に簡単な例を提供できれば、それは非常にありがたいです。

262

XMLレイアウトを作成すると、Android OSによってinflatedになります。これは、基本的には、メモリにビューオブジェクトを作成することでレンダリングされることを意味します。それを暗黙のインフレーションと呼びましょう(OSがビューをインフレーションします)。例えば:

class Name extends Activity{
    public void onCreate(){
         // the OS will inflate the your_layout.xml
         // file and use it for this activity
         setContentView(R.layout.your_layout);
    }
}

LayoutInflaterを使用して、ビューを明示的にインフレートすることもできます。その場合、次のことを行う必要があります。

  1. LayoutInflaterのインスタンスを取得します
  2. 膨張させるXMLを指定します
  3. 返されたViewを使用します

例えば:

LayoutInflater inflater = LayoutInflater.from(YourActivity.this); // 1
View theInflatedView = inflater.inflate(R.layout.your_layout, null); // 2 and 3
244
Cristian

ビューの「拡張」とは、レイアウトXMLを取得して解析し、内部で指定された要素とその属性からビューおよびビューグループオブジェクトを作成し、それらのビューおよびビューグループの階層を親ViewGroupに追加することを意味します。 setContentView()を呼び出すと、XMLの読み取りから作成されたビューがアクティビティにアタッチされます。 LayoutInflaterを使用して別のViewGroupにビューを追加することもできます。これは、多くの状況で便利なツールになります。

153
jjb

Inflatingは、実行時にview(.xml)をアクティビティに追加するプロセスです。 listViewを作成すると、各アイテムが動的に膨張します。 buttonやtextviewなどの複数のビューを持つViewGroupを作成する場合。次のように作成できます

Button but = new Button();
but.setText ="button text";
but.background ...
but.leftDrawable.. and so on...

TextView txt = new TextView();
txt.setText ="button text";
txt.background ... and so on...

次に、上記のビューを追加できるレイアウトを作成する必要があります

RelativeLayout rel = new RelativeLayout();

rel.addView(but);

そして今、右隅にボタンを追加し、下部にテキストビューを追加したい場合。私たちは多くの仕事をしなければなりません。最初にビューのプロパティを使用し、次に複数の制約を適用する必要があります。大変で時間のかかる仕事です。

Androidを使用すると、単純な.xmlを簡単に作成し、そのスタイルと属性をxmlで設計し、制約を設定したりプログラムで設定したりすることなく、必要な場所に簡単に展開できます。

LayoutInflater inflater = 
              (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View menuLayout = inflater.inflate(R.layout.your_menu_layout, mainLayout, true);
//now add menuLayout to wherever you want to add like

(RelativeLayout)findViewById(R.id.relative).addView(menuLayout);
30
Xar E Ahmer

ここで、「ビューの膨張」とは、そのxmlファイルで指定されたビューを描画するlayout.xmlファイルを取得し、作成されたビューで親viewGroupをPOPULATING(= inflating)することを意味すると思います。

4
Jaydeep Ranipa

UIをXMLにしますが、表示オブジェクトは表示するものなので、何らかの方法でxmlを表示オブジェクトに変換する必要があります。そのため、膨らませることはxmlを表示オブジェクトに変換して表示できるようにするため、レイアウトインフレータサービスというサービスが必要ですxmlを渡すと、変換されます。

1
blackHawk