web-dev-qa-db-fra.com

Comment puis-je inclure par programmation une mise en page dans Android?

Je cherche un moyen d'inclure une mise en page par programme au lieu d'utiliser la balise XML include comme dans mon exemple:

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

Besoin de changer ce paramètre "layout =" @ layout/message "par programme, s'il vous plaît.

Une idée comment faire ça?

60
slama007

Utilisez un ViewStub au lieu de 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" />

Ensuite, dans le code, obtenez une référence au stub, définissez sa ressource de présentation et gonflez-la:

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

Dans Mono.Droid/Xamarin cela a fonctionné pour moi:

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