为什么没有一个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 。