这可能听起来很愚蠢,但实际上我找不到任何东西.可以在Android中的活动根视图中添加多个视图吗?
所以例如我可以这样:
setContentView(R.layout.main);
setContentView(gLView);
setContentView(otherView);
Run Code Online (Sandbox Code Playgroud)
或者只是将其作为视图检索
FrameLayout layout = (FrameLayout)this.getWindow().getDecorView().findViewById(android.R.id.content);
layout.addView(view1);
layout.addView(view2);
layout.addView(view3);
layout.addView(view4);
Run Code Online (Sandbox Code Playgroud)
这一切似乎都适用于我测试的设备,但它是否能保证能够在所有这些设备上运行?或者我应该人工创建单个FrameLayout添加到根视图并添加所有内容FrameLayout?
更多实验:
1)如果我不使用setContentView和打印:
Log.d("Test", this.getWindow().getDecorView().findViewById(android.R.id.content).getClass().getName());
Run Code Online (Sandbox Code Playgroud)
我得到:android.widget.FrameLayout
2)如果我将内容视图设置为例如GLSurfaceView并打印相同Log.d
它也会打印android.widget.FrameLayout
3)如果我setContentView根本不使用,那就干脆做
FrameLayout layout = (FrameLayout)this.getWindow().getDecorView().findViewById(android.R.id.content);
layout.addView(myView);
Run Code Online (Sandbox Code Playgroud)
它附上了视图
所以我假设android.R.id.content返回的不是你设置的内容,setContentView而是你设置的内容,或者活动中的实际根视图(结果是FrameLayout?)
我可以通过这种方式添加多个孩子,但问题是: 我允许这样做吗?
View是的,在根级别添加多个 content 是完全可以的。内容View只是添加到容器中,如果您需要的只是FrameLayout将其用于您的布局,最佳实践是简单地使用它,而不是添加额外的容器层。FrameLayout
如果您要添加新内容View,那么您应该使用addContentView()方法而不是setContentView(),这会导致现有内容被替换。
此外,还可以View通过使用<merge>tag将多个 s 添加到 XML 布局中的内容容器,该 tag 只会替换 base FrameLayout。
| 归档时间: |
|
| 查看次数: |
4039 次 |
| 最近记录: |