您可以随时替换任何视图。
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);
如果您不想替换现有的View,而是在初始化时在option1 / option2之间进行选择,则可以更轻松地进行此操作:设置android:id为父布局,然后:
ViewGroup parent = (ViewGroup) findViewById(R.id.parent);
View C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);
您将必须根据视图结构将“索引”设置为适当的值。您还可以使用ViewStub:将C视图添加为ViewStub,然后:
ViewStub C = (ViewStub) findViewById(R.id.C);
C.setLayoutResource(optionId);
C.inflate();
这样,如果您要重组XML布局,则不必担心高于“索引”值。