Você pode substituir qualquer visualização a qualquer 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);
Se você não deseja substituir a Visualização já existente , mas escolher entre a opção1 / opção2 no momento da inicialização, poderá fazer isso mais facilmente: defina o android:id
layout pai e:
ViewGroup parent = (ViewGroup) findViewById(R.id.parent);
View C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);
Você precisará definir "índice" para o valor adequado, dependendo da estrutura de visualizações. Você também pode usar um ViewStub : adicione sua visualização C como ViewStub e, em seguida:
ViewStub C = (ViewStub) findViewById(R.id.C);
C.setLayoutResource(optionId);
C.inflate();
Dessa forma, você não precisará se preocupar com o valor acima do "índice" se desejar reestruturar seu layout XML.
android.app.FragmentTransaction
e éreplace()
método.E se você fizer isso com muita frequência, poderá usar um ViewSwitcher ou um ViewFlipper para facilitar a substituição da exibição.
fonte
fonte
funciona no meu caso, oldSensor e newSnsor - oldView e newView:
fonte