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 des éléments déjà existants Voir mais choisir entre l'option 1 et l'option 2 au moment de l'initialisation, alors vous pourriez faire ceci plus facilement : définir android:id
pour la disposition des parents et ensuite :
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 comme ViewStub et ensuite :
ViewStub C = (ViewStub) findViewById(R.id.C);
C.setLayoutResource(optionId);
C.inflate();
Ainsi, vous n'aurez pas à vous soucier de la valeur "index" ci-dessus si vous souhaitez restructurer votre présentation XML.