我知道如何使用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@#######
请确认。