Activity.addContentView(View) == ViewGroup.addContentView(View)?
Posted
技术标签:
【中文标题】Activity.addContentView(View) == ViewGroup.addContentView(View)?【英文标题】:Activity.addContentView(View) == ViewGroup.addContentView(View)? 【发布时间】:2012-04-16 07:16:53 【问题描述】:我有一个关于 android Activity 的问题:
一个 Activity 有一个 addContentView(View)
方法,而一个 ViewGroup 有一个(类似的?)addView(View)
方法。
不幸的是,来自addContentView
的视图的放置位置没有记录。是像LinearLayout
只是将视图添加到底部,还是更像FrameLayout
,将其视图添加到“顶部”?是否依赖setContentView
设置的ViewGroup
?
如果我深入研究源代码,我发现addContentView
将调用Window
的抽象方法addContentView
。不幸的是,我看不到哪个类正在实现这个方法。那么 Activity addContentView
的行为究竟是什么?
【问题讨论】:
【参考方案1】:每个活动的基本布局都是FrameLayout
。这意味着您通常通过setContentView()
设置的布局是此布局的子布局。 addContentView()
添加了另一个子元素,因此它的行为类似于FrameLayout
(这意味着它在现有元素之上添加了新的 UI 元素)。
您可以使用ANDROID_SDK\tools
文件夹中名为hierachyviewer
的工具进行检查。下面是两张截图:
这是调用 addContentView()
之前的布局,我的活动由默认的 FrameLayout 组成,其中包含一个带有按钮的 LinearLayout(我的布局在这里)。这反映在此处的底行,上面的其他元素是标题/状态栏。
通过addContentView()
添加 TextView 后,它看起来像这样。你可以看到基础 FrameLayout 有了一个新的孩子。
【讨论】:
哇。非常感谢您的回答,谢谢。您的提示和您建议的工具将为我节省大量时间!您是让 *** 如此出色的用户! hierarchiviewer 未被弃用,但有一个选项developer.android.com/studio/profile/hierarchy-viewer以上是关于Activity.addContentView(View) == ViewGroup.addContentView(View)?的主要内容,如果未能解决你的问题,请参考以下文章
selenium chromedriver geckodriver iedriverserver下载
Vue.js常用指令汇总(v-if//v-show//v-else//v-for//v-bind//v-on等)
根据每个元素的i属性,由小到大排列如下数组ar=[{i:5,v:1},{i:5,v:4},{i:2,v:1},{i:1,v:3},{i:3,v:2},{i:6,v:1},{i:4,v:1}];