アクティビティのタイトル バーのサイズとシステム バーのサイズを取得するにはどうすればよいですか?
1 に答える
私は自分のルート レイアウトを使用してそれを行いました。問題は、onCreate/onStart/onResume メソッドを初めて実行するときに、この情報 (幅と高さ) を取得できないことです。
その後いつでも、ルート レイアウト (LinearLayout/FrameLayout/TableLayout/etc) からサイズを取得できます。私の場合は FrameLayout を使用していました。
FrameLayout f = (FrameLayout) findViewById(R.id.layout_root);
Log.d(TAG, "width " + f.getMeasuredWidth() );
Log.d(TAG, "height " + f.getMeasuredHeight() );
また:
FrameLayout f = (FrameLayout) findViewById(R.id.layout_root);
Log.d(TAG, "width " + f.getRight() );
Log.d(TAG, "height " + f.getBottom() );
アクティビティの高さが既にわかっているので、システム バーの高さを知るには、アクティビティの高さから画面全体の高さを差し引くだけです。
画面の高さを取得する方法については、こちらで説明しています: 画面の寸法をピクセルで取得する
ここから編集 ----------------------------------------------- ----------
onCreted メソッドでこの情報を取得する方法を見つけましたが、複数のアクティビティがある場合に限ります。私の場合、2 番目のアクティビティを呼び出すメイン アクティビティがあります。
second_activity を呼び出す前の main_activity で、新しい Itent によって、second_activity の追加情報を追加できます。最初のアクティビティで必要なコードは次のとおりです。
Intent i = new Intent(this, SecondActivity.class);
i.putExtra("width", f.getMeasuredWidth());
i.putExtra("height", f.getMeasuredHeight());
startActivity(i);
その後、2 番目のアクティビティで、2 番目のアクティビティの onCreate メソッドでこの情報を取得できます。
int width = getIntent().getExtras().getInt("width");
int height = getIntent().getExtras().getInt("height");