android – 可以将多个视图添加到Activity的根视图吗?

前端之家收集整理的这篇文章主要介绍了android – 可以将多个视图添加到Activity的根视图吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这可能听起来很愚蠢,但实际上我找不到任何东西.
可以在Android中的活动根视图中添加多个视图吗?

所以例如我可以这样:

setContentView(R.layout.main);
setContentView(gLView);
setContentView(otherView);

或者只是将其作为视图检索

FrameLayout layout = (FrameLayout)this.getWindow().getDecorView().findViewById(android.R.id.content);
layout.addView(view1);
layout.addView(view2);
layout.addView(view3);
layout.addView(view4);

这一切似乎都适用于我测试的设备,但它是否能保证能够在所有这些设备上运行?
或者我应该人为地创建单个FrameLayout以添加到根视图并将所有内容添加到此FrameLayout?

更多实验:
1)如果我不使用setContentView并打印:

Log.d("Test",this.getWindow().getDecorView().findViewById(android.R.id.content).getClass().getName());

我得到: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);

它附上了视图

所以我假设android.R.id.content不返回你设置的setContentView,而是你设置的内容,或者活动中的实际根视图(结果是FrameLayout?)

我可以通过这种方式添加多个孩子,但问题是:
我被允许这样做吗?

最佳答案
是的,在根级别添加多个内容视图是完全可以的.内容视图只是简单地添加到FrameLayout容器中,如果只需要FrameLayout就可以将它用于布局,而不是添加额外的容器层.

如果要添加内容View,则应使用addContentView()方法而不是setContentView(),这将导致替换现有内容.

此外,还可以使用 tag将多个视图添加到XML布局中的内容容器中,这将仅替换基本FrameLayout.

猜你在找的Android相关文章