【问题标题】: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 的行为究竟是什么?

【问题讨论】:

    标签: android view android-activity window viewgroup


    【解决方案1】:

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

    您可以使用ANDROID_SDK\tools 文件夹中名为hierachyviewer 的工具进行检查。下面是两张截图:

    这是调用 addContentView() 之前的布局,我的活动由默认的 FrameLayout 组成,其中包含一个带有按钮的 LinearLayout(我的布局在这里)。这反映在此处的底行,上面的其他元素是标题/状态栏。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-31
    • 2016-07-24
    • 1970-01-01
    • 2018-12-20
    • 2012-05-16
    • 2014-01-10
    • 2015-11-14
    • 1970-01-01
    相关资源
    最近更新 更多