我有一个xml带有两个文本视图 A/B 和一个视图 C 的 -layout 文件 main。我还有两个其他xml-layout 文件option1和option2. 是否可以通过 Java 将其中一个option1或option2在运行时加载到 C 中?如果是这样,我必须使用什么功能?
xml
option1
option2
您可以随时替换任何视图。
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父布局,然后:
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 布局,您就不必担心高于“索引”值。