gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:31:48 28 4
gpt4 key购买 nike

我有一个关于 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 文件夹。这是两个屏幕截图:

enter image description here

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

enter image description here

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

关于android - Activity.addContentView( View ) == ViewGroup.addContentView( View )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9979648/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com