Chr*_*ian 167 android android-layout
我有一个xml-layout文件main,有两个textview A/B和一个视图C.我还有两个xml-layout文件option1和option2.是否可以通过Java将任何一个option1或option2在运行时加载到C中?如果是这样,我必须使用什么功能?
bro*_*oot 364
您可以随时替换任何视图.
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);
Run Code Online (Sandbox Code Playgroud)
如果您不想替换现有的View,但是在初始化时选择option1/option2,那么您可以更容易地做到:android:id为父布局设置然后:
ViewGroup parent = (ViewGroup) findViewById(R.id.parent);
View C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);
Run Code Online (Sandbox Code Playgroud)
您必须根据视图结构将"index"设置为正确的值.您还可以使用ViewStub:将您的C视图添加为ViewStub,然后:
ViewStub C = (ViewStub) findViewById(R.id.C);
C.setLayoutResource(optionId);
C.inflate();
Run Code Online (Sandbox Code Playgroud)
这样,如果您想重构XML布局,就不必担心上面的"索引"值.
Sni*_*las 42
如果你经常这样做,你可以使用ViewSwitcher或ViewFlipper来简化视图替换.
| 归档时间: |
|
| 查看次数: |
115819 次 |
| 最近记录: |