Android で View の Id が取得できない場合にコンテンツ表示領域のサイズを取る方法
コンテンツ表示領域の width, height を取得したい場合、通常なら
Activity#findViewById() して取得した ViewGroup の getter である getWidth, getHeight を使えばいい。
一方、たとえば SDK の開発などで、
”SDK組み込み先のアプリのコンテンツ表示領域の特定位置に何らかの View (fragmentなど)を表示させたい”
といったときは、view の id がわからず、この方法が使えないこともある。
そういうときは、以下のように、 root のレイアウトを取得する。
ViewGroup root = (ViewGroup)getWindow().getDecorView().findViewById(android.R.id.content); root.getHeight(); root.getWidth();
参考
Activity#findViewById での取得
Android 端末の画面サイズを取得-Oboe吹きプログラマの黙示録
Androidの画面サイズを攻略して機種依存を吸収する(ナビゲーションバーとステータスバーのサイズを取得する) | Tech Booster
ViewGroup#getWindow からたどって取得
Activityのビュー階層とコンテンツルート(View)を取得する - Kazzzの日記
Androidアプリサービス開発者ブログ:レイアウトのRootのView取得方法