Activityのルートビューの取得

Activityをレイアウトから生成する場合、もしルートビューを取得したいならレイアウトファイルでトップのビューにIDを割り振っておけばビューを取得できます。

<?xml version="1.0"encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rootView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
</LinearLayout>

このレイアウトなら

LinearLayout rootView = (LinearLayout)findViewById(R.id.rootView);

とすればルートビューが取得できます。

これでもルートビューは取得できますが、もっと楽な方法もあります。

それはレイアウトファイルであらかじめ定義されているandroid.R.id.contentから全てのレイアウトのトップビューを取得し、そこから0番目の要素を探す方法です。

ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

android.R.id.contentはレイアウトが作成されたときにSDKが自動的に生成するIDです。

contentの下にレイアウトがぶら下がっているのでその0番目を取得すればルートビューが手に入ります。

いちいちビューにIDを割り振りたくないといった時には使える便利な方法です。

関連項目
プライバシーポリシー