2

ユーザーが写真を撮ったり、ギャラリーから写真を選択したりするアプリがあります。次のページでは、 を使用onGlobalLayoutして のサイズを決定しViewます。ユーザーがギャラリーから画像を選択すると、Viewサイズが に正しく返されonGlobalLayoutます。ただし、ユーザーが写真を撮るとStatus Bar、上部の が見えなくなります。次のアクティビティが表示されるとStatus Bar、 が上からスライドして画面サイズが変更されますが、onGlobalLayoutはこれを考慮しないため、間違ったサイズのビューを返します。

これは Android のバグのようで、バグ レポートを提出することを検討しています。ただし、これに対する回避策はありますか?

例:

public class MyView extends View implements OnGlobalLayoutListener {

    @Override
    public void onGlobalLayout() {
        Log.d("MyView", "Width: " + getWidth());
        Log.d("MyView", "Height: " + getHeight());
    }
}

上記のコードは、元の画面にステータス バーがあるかどうかに応じて、2 つの異なる幅と高さを返します。

ありがとう

4

1 に答える 1

0

ビューでオーバーライドfitSystemWindowsして のサイズを取得し、StatusBarそれに応じてビューのサイズを計算できます。例については、こちらの回答を参照してください。

Android はデバイスの画面密度に応じてステータス バーのサイズが固定されているため、一般的ではなく、より面倒な別の解決策は、ステータス バーの高さの事前定義されたリストに従ってサイズを調整することです。

Androidのバグではないと思います。

于 2013-02-11T03:45:42.860 に答える