Activity.addContentView(View)== ViewGroup.addContentView(View)?

Raf*_*l T 12 android window view viewgroup android-activity

我对Android活动有疑问:

addContentView(View)当ViewGroup具有(类似的?)addView(View)方法时,Activity具有Method.

不幸的是,它没有记录视图来自哪里addContentView.它LinearLayout只是将视图添加到底部,还是更像是a FrameLayout,它将视图添加到"onTop"?它取决于ViewGroup设定的setContentView

如果我深入了解消息来源,我会看到它addContentView会调用Window抽象方法addContentView.不幸的是我无法看到哪个类正在实现此方法.那么Activitys的行为addContentView到底是什么?

小智 40

每个活动的基本布局是FrameLayout.这意味着您通常设置的布局setContentView()是此布局的子级.addContentView()只添加另一个孩子,因此它的行为类似于FrameLayout (这意味着它会在现有的UI元素之上添加新的UI元素).

您可以使用hierachyviewerANDROID_SDK\tools文件夹调用的工具来检查此项.这是两个截图:

在此输入图像描述

这是调用之前的布局addContentView(),我的活动包含默认的FrameLayout,持有带有Button的LinearLayout(我的布局在这里).这反映在这里的底行,上面的其他元素是标题/状态栏.

在此输入图像描述

通过addContentView()它添加TextView后看起来像这样.你可以看到基础FrameLayout有了一个新的孩子.

  • 哇.非常感谢您的回答,谢谢.你的小费和你建议的工具将节省我很多时间!你是那种使Stackoverflow如此出色的用户! (4认同)