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?
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();
ViewStub stub = (ViewStub) findViewById(R.id.text_post);
stub.setLayoutResource(R.layout.profile_header);
View inflated = stub.inflate();
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();