3

こんにちは私は、画面の画面サイズから下部のメニューバーを差し引いたものを取得しようとしています。

デバイスの解像度に応じて定数を引くことができることは知っていますが、それは非常に醜いハックです。グーグルの人々は、フルスクリーンサイズからそれを差し引くことができるように、下部のメニューバーの高さを取得する機能をユーザーに与えることを忘れるほど愚かではないと確信しています

これは同様の投稿です。 Androidの通知バーとタイトルバーのサイズは?

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

what_i_need =metrics.heightPixels-buttomMenuHeight();

buttomMenuHeight();が必要です。

APIで見つかりませんでした。この時点では、後方比較可能性についてはあまり気にしません。

ありがとう

4

3 に答える 3

7

アクティビティのトップレベルビューの高さを使用してみませんか?たとえば、アクティビティにフルハイトのLinearLayoutが含まれている場合は、その高さを使用するため、メニューの高さや通知バーの高さを知る必要はありません。

Androidの将来のレイアウトや、Google TVでのレイアウトの違いなどがわからないため、この種の計算を行う危険な道を進んでいると思います。

于 2011-03-02T21:52:46.470 に答える
1

onLayoutの後にgetHeight()を呼び出してみてください。ビューは、膨らませたサイズではありません。

編集:または、ActivityにはonLayoutがないため、onSizeChangedを待つ場合があります。

(参照アクティビティがいつレイアウトされているかを知る方法は?

于 2011-03-09T04:55:26.920 に答える
0

ネイティブコードで画像を描画していますが、画面のサイズをCに渡す必要があります。

ビューのgetHeight()で高さを取得しようとしましたが、setContentViewが呼び出された後でも常に0が返されます。

RelativeLayout masterLayout = new RelativeLayout(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
masterLayout.setLayoutParams(params);
setContentView(masterLayout);

masterLayout.getHeight()を試してみると、0が返されます。fill_parentと言ったように、全画面の高さを取得することを期待していました。

于 2011-03-02T22:40:21.663 に答える