为什么没有一个Activity的getContentView()方法?

Activity类有一个setContentView()方法。 PopupWindow类有一个getContentView()方法,但没有别的。 有没有另一种方式来获得一个活动的主要内容视图?

通过这个调用,我能够得到一个Activity的内容:

 ViewGroup view = (ViewGroup)getWindow().getDecorView(); 

你可能应该检查getDecorView为所有情况返回一个instanceof ViewGroup,但是在Activity中的LinearLayout运行良好。 要到达LinearLayout,您可以:

 LinearLayout content = (LinearLayout)view.getChildAt(0); 

如果你有这样的function:

 void logContentView(View parent, String indent) { Log.i("test", indent + parent.getClass().getName()); if (parent instanceof ViewGroup) { ViewGroup group = (ViewGroup)parent; for (int i = 0; i < group.getChildCount(); i++) logContentView(group.getChildAt(i), indent + " "); } } 

你可以遍历所有视图,并在你的Activity中使用下面的调用logging它们的类名:

 logContentView(getWindow().getDecorView(), ""); 

以下线将做的诀窍:

 findViewById(android.R.id.content); 

它基本上是一样的(它需要在一个Activity的上下文中调用)

 this.findViewById(android.R.id.content); 

我也在寻找这个,但我只是认为这可能是更容易的一个ID添加到最外层的ViewGroup。

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/outer"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> 

不过,我会继续寻找更多的时间。 我进入它,以便我可以使用从最外面的布局findViewWithTag 。