2

アクティビティのタイトル バーのサイズとシステム バーのサイズを取得するにはどうすればよいですか?

4

1 に答える 1

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");
于 2012-02-07T05:56:45.477 に答える