Android布局在运行时用另一个视图replace一个视图
我有一个xml布局文件主要包含两个textview A / B和一个视图C.比我有两个其他的xml布局文件option1
和option2
。 是否有可能在运行时加载option1
或option2
通过Java到C? 如果是这样,我必须使用什么function?
您可以随时replace任何视图。
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);
如果你不想replace已经存在的视图 ,但是在初始化时select了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布局。
如果您经常这样做,则可以使用ViewSwitcher或ViewFlipper来简化视图replace。
- 在android studio中导入项目时得到“解决”错误,无法加载类“org.codehaus.groovy.runtime.typehandling.ShortTypeHandling'
- 监控Android手机中的networking活动
- Android中的Looper,Handler和MessageQueue之间有什么关系?
- 如何在Android中parsingjsonstring?
- 如何使用Eclipse逐行debuggingAndroid应用程序?
- Android 5.0的android:海拔为视图,但不是button?
- 在早期的sdk版本中,ActionBar的等价物是什么?
- 在工具栏下的导航抽屉
- 如何制作Android自定义键盘?