我有一个关于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之后,如下所示。可以看到基本框架布局有了一个新的子级。