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下载

golang:%v,%+v,%#v的区别

v-show、v-if、v-bind

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}];

证明 U and V={0}时 dim(U+V)=dim(U)+dim(V)