Puede reemplazar cualquier vista en cualquier momento.
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 no desea reemplazar la Vista ya existente , pero elige entre la opción1 / opción2 en el momento de la inicialización, entonces podría hacerlo más fácilmente: configure el android:id
diseño primario y luego:
ViewGroup parent = (ViewGroup) findViewById(R.id.parent);
View C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);
Deberá establecer el "índice" en el valor adecuado según la estructura de las vistas. También puede usar un ViewStub : agregue su vista C como ViewStub y luego:
ViewStub C = (ViewStub) findViewById(R.id.C);
C.setLayoutResource(optionId);
C.inflate();
De esa manera, no tendrá que preocuparse por el valor de "índice" anterior si desea reestructurar su diseño XML.
android.app.FragmentTransaction
y sureplace()
método.Y si lo hace con mucha frecuencia, podría usar un ViewSwitcher o un ViewFlipper para facilitar la sustitución de la vista.
fuente
fuente
funciona en mi caso, oldSensor y newSnsor - oldView y newView:
fuente