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.

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...