The Activity
class has a setContentView()
method. The PopupWindow
Class has a getContentView()
method but nothing else does. Is there another way to get the main content view for an activity?
I was able to get to the contents of an Activity with this call:
ViewGroup view = (ViewGroup)getWindow().getDecorView();
You should probably check that getDecorView returns an instanceof ViewGroup for all cases, but with a LinearLayout in the Activity the code above runs fine. To get to the LinearLayout you could then just:
LinearLayout content = (LinearLayout)view.getChildAt(0);
And if you have a function like this:
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 + " ");
}
}
You could iterate through all views and log their class names with the following call inside your Activity:
logContentView(getWindow().getDecorView(), "");
Following line will do the trick:
findViewById(android.R.id.content);
it is essentially same as (it needs to be called on the context of an Activity)
this.findViewById(android.R.id.content);
I'm looking for this as well, but I just thought that it might be easier to add an id to the outermost 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">
I'll keep looking for a few more minutes, though. I'm into it so that I can use findViewWithTag from the outermost layout.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With