我有一个关于 Android Activity 的问题:
Activity 具有方法 addContentView(View)
而 ViewGroup 具有(类似?)addView(View)
方法。
不幸的是,它未记录 addContentView
中的 View 所在的位置。它是像 LinearLayout
只是将 View 添加到底部,还是更像 FrameLayout
,将其 View 添加到“onTop”?是否依赖于setContentView
设置的ViewGroup
?
如果深入研究源代码,我会发现 addContentView
将调用 Window
的抽象方法 addContentView
。不幸的是我看不到哪个类正在实现这个方法。那么 Activity addContentView
的行为到底是什么?
最佳答案
每个 Activity 的基本布局都是一个FrameLayout
。这意味着您通常通过 setContentView()
设置的布局是此布局的子布局。 addContentView()
只添加另一个子元素,因此它的行为类似于 FrameLayout
(这意味着它在现有元素之上添加新的 UI 元素)。
您可以使用名为 hierachyviewer
的工具进行检查从您的 ANDROID_SDK\tools
文件夹。这是两个屏幕截图:
这是调用 addContentView()
之前的布局,我的 Activity 由默认的 FrameLayout 组成,其中包含一个带有 Button 的 LinearLayout(此处为我的布局)。这反射(reflect)在此处的底行中,上面的其他元素是标题/状态栏。
通过 addContentView()
添加 TextView 后,它看起来像这样。您可以看到基础 FrameLayout 有一个新的 child 。
关于android - Activity.addContentView( View ) == ViewGroup.addContentView( View )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9979648/