web-dev-qa-db-ja.com

プログラムでAndroidにレイアウトを含めるにはどうすればよいですか?

私の例のようなXMLタグincludeを使用する代わりに、プログラムでレイアウトを含める方法を探しています。

  <include layout="@layout/message"  
           Android:layout_width="match_parent" 
           Android:layout_height="match_parent" 
           Android:layout_weight="0.75"/>

このパラメータ「layout = "@ layout/message」をプログラムで変更する必要があります。

これを行う方法はありますか?

60
slama007

ViewStubの代わりにincludeを使用します。

<ViewStub
    Android:id="@+id/layout_stub"
    Android:inflatedId="@+id/message_layout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_weight="0.75" />

次に、コードで、スタブへの参照を取得し、そのレイアウトリソースを設定して、それを展開します。

ViewStub stub = (ViewStub) findViewById(R.id.layout_stub);
stub.setLayoutResource(R.layout.whatever_layout_you_want);
View inflated = stub.inflate();
142
kcoppock
ViewStub stub = (ViewStub) findViewById(R.id.text_post);
        stub.setLayoutResource(R.layout.profile_header);
        View inflated = stub.inflate();
5
patel135

Mono.Droid/Xamarinでは、これは私のために働いた:

ViewStub stub = FindViewById<ViewStub>(Resource.Id.layout_stub);
stub.LayoutResource = Resource.Layout.whatever_layout_you_want;
stub.Inflate();
3
Daniele D.