Why isn't there a getContentView() method for Activity?

前端 未结 3 1124
梦如初夏
梦如初夏 2020-12-01 10:04

The Activity class has a setContentView() method. The PopupWindow Class has a getContentView() method but nothing else d

相关标签:
3条回答
  • 2020-12-01 10:43

    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(), "");
    
    0 讨论(0)
  • 2020-12-01 10:43

    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);
    
    0 讨论(0)
  • 2020-12-01 10:45

    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.

    0 讨论(0)
提交回复
热议问题