我有一个关于Android活动的问题:
活动具有addContentView(View)方法,而视图组具有(类似的?)addView(View)方法。
不幸的是,它的未记录视图位于addContentView的位置。它是像一个只在底部添加视图的LinearLayout,还是更像一个添加视图“ontop”的FrameLayout?是否取决于由ViewGroup设置的setContentView
如果我深入到源代码中,我会发现addContentView将调用Window的抽象方法addContentView。不幸的是,我看不到哪个类正在实现这个方法。那么活动的行为究竟是什么?

最佳答案

每个活动的基本布局是aFrameLayout。这意味着通常通过setContentView()设置的布局是此布局的子级。addContentView()只添加另一个子元素,因此它的行为类似于FrameLayout(这意味着它在现有的ui元素之上添加新的ui元素)。
您可以使用hierachyviewer文件夹中名为ANDROID_SDK\tools的工具进行检查。下面是两张截图:
这是调用addContentView()之前的布局,我的活动由默认的framelayout组成,其中包含一个带有按钮的linearlayout(此处为“我的布局”)。这反映在下面一行,上面的其他元素是title/statusbar。
在通过addContentView()添加textview之后,如下所示。可以看到基本框架布局有了一个新的子级。

09-27 00:15