gpt4 book ai didi

android - 可以将多个 View 添加到 Activity 的 Root View 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:46:05 24 4
gpt4 key购买 nike

这听起来可能很愚蠢,但实际上我在上面找不到任何东西。在 Android 中向 Activity 的 Root View 添加多个 View 是否可以?

所以例如我可以这样走:

setContentView(R.layout.main);
setContentView(gLView);
setContentView(otherView);

或者简单地将其检索为 View

FrameLayout layout = (FrameLayout)this.getWindow().getDecorView().findViewById(android.R.id.content);
layout.addView(view1);
layout.addView(view2);
layout.addView(view3);
layout.addView(view4);

这一切似乎都适用于我测试的设备,但是否保证适用于所有设备?或者我应该人为地创建单个 FrameLayout 以添加到 Root View 并将所有内容添加到此 FrameLayout 吗?

更多实验:1) 如果我不使用 setContentView 并打印:

Log.d("Test", this.getWindow().getDecorView().findViewById(android.R.id.content).getClass().getName());

我得到:android.widget.FrameLayout

2) 如果我将内容 View 设置为例如 GLSurfaceView 并打印相同的 Log.d它还打印 android.widget.FrameLayout

3) 如果我根本不使用 setContentView,而只是使用

FrameLayout layout = (FrameLayout)this.getWindow().getDecorView().findViewById(android.R.id.content);
layout.addView(myView);

附加 View

所以我假设 android.R.id.content 返回的不是您通过 setContentView 设置的内容,而是您设置的内容的父级,或者 Activity 中的实际 Root View (原来是FrameLayout?)

我可以通过这种方式添加多个 child ,但问题是:我可以这样做吗?

最佳答案

是的,添加多个内容完全没问题View s 在根级别。内容View s 只是添加到 FrameLayout 中容器,如果 FrameLayout,最好将它简单地用于您的布局。这就是您所需要的,而不是添加额外的容器层。

如果您要添加新内容 View , 那么你应该使用 addContentView()方法而不是 setContentView() ,这将导致替换现有内容。

此外,可以添加多个 View也可以通过使用 <merge> tag 将 s 添加到 XML 布局中的内容容器, 这只会取代基础 FrameLayout .

关于android - 可以将多个 View 添加到 Activity 的 Root View 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21263157/

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