Vous pouvez remplacer n'importe quelle vue à tout moment.
int optionId = someExpression ? R.layout.option1 : R.layout.option2;
View C = findViewById(R.id.C);
ViewGroup parent = (ViewGroup) C.getParent();
int index = parent.indexOfChild(C);
parent.removeView(C);
C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);
Si vous ne souhaitez pas remplacer déjà existant Voir , mais choisir entre option1 / option2 au moment de l' initialisation, vous pouvez le faire plus facilement: ensemble android:id
pour la mise en page de parent puis:
ViewGroup parent = (ViewGroup) findViewById(R.id.parent);
View C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);
Vous devrez définir "index" à la valeur appropriée en fonction de la structure des vues. Vous pouvez également utiliser un ViewStub : ajoutez votre vue C en tant que ViewStub puis:
ViewStub C = (ViewStub) findViewById(R.id.C);
C.setLayoutResource(optionId);
C.inflate();
De cette façon, vous n'aurez pas à vous soucier de la valeur "index" ci-dessus si vous souhaitez restructurer votre mise en page XML.
android.app.FragmentTransaction
sareplace()
méthode.Et si vous faites cela très souvent, vous pouvez utiliser un ViewSwitcher ou un ViewFlipper pour faciliter la substitution de vue.
la source
la source
cela fonctionne dans mon cas, oldSensor et newSnsor - oldView et newView:
la source