协慌网

登录 贡献 社区

从当前活动获取根视图

我知道如何使用View.getRootView()获得根视图。我还可以从按钮的onClick事件获取视图,其中参数为View 。但是如何获得活动中的视图

答案

如果您需要活动的根视图(以便可以在其中添加内容),请使用

findViewById(android.R.id.content).getRootView()

另外据报道,在某些设备上您必须使用

getWindow().getDecorView().findViewById(android.R.id.content)

反而。

请注意,正如 Booger 所报告的那样,这可能在某些设备上位于导航栏(带有后退按钮等)的后面(但在大多数设备上似乎并非如此)。

setContentView()方法获取添加到活动中的视图,那么就像 pottedmeat 所写的那样,您可以使用

final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

但是最好在 xml 布局中将此 ID 设置为此视图,并改用此 ID。

setContentView分配的 XML 文件中找到的根视图的方法:

final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

我只在 android 4.0.3 中测试过:

getWindow().getDecorView().getRootView()

给出相同的看法,我们从中得到什么

anyview.getRootView();

com.android.internal.policy.impl.PhoneWindow$DecorView@#########

getWindow().getDecorView().findViewById(android.R.id.content)

给它的孩子

android.widget.FrameLayout@#######

请确认。