20

Androidでソフトボタンバーとステータスバーのサイズを合わせて取得する方法はありますか? または、これら両方のバーの高さなしで画面の高さを取得する方法はありますか? (それらは常に同じであるとは限りません。たとえば nexus 7 を見てください)

4

4 に答える 4

47

ステータス バーの高さ

ステータス バーの高さは画面サイズによって異なります。たとえば、画面サイズが240 X 320のデバイスではステータス バーの高さは20pxであり、画面サイズが320 X 480のデバイスではステータス バーの高さは25px です480 x 800ステータス バーの高さは 38px にする必要があります

このスクリプトを使用してステータスバーの高さを取得することをお勧めします

Rect rectangle = new Rect();
Window window = getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectangle);
int statusBarHeight = rectangle.top;
int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
int titleBarHeight= contentViewTop - statusBarHeight;

Log.i("*** Value :: ", "StatusBar Height= " + statusBarHeight + " , TitleBar Height = " + titleBarHeight); 

onCreate()アクティビティのメソッドでステータス バーの高さを取得するには、次のメソッドを使用します。

public int getStatusBarHeight() { 
      int result = 0;
      int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
      if (resourceId > 0) {
          result = getResources().getDimensionPixelSize(resourceId);
      } 
      return result;
} 

ソフトキーボタンバー

このメソッドは、Android KitKat (4.4) でレイアウト パディングを設定するために非常に便利です。これを使用すると、ソフト ボタン バーがレイアウトに重なるのを避けることができます。

このgetRealMetricsメソッドは、API 17 および + でのみ使用できます

@SuppressLint("NewApi")
private int getSoftButtonsBarHeight() {
    // getRealMetrics is only available with API 17 and +
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int usableHeight = metrics.heightPixels;
        getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
        int realHeight = metrics.heightPixels;
        if (realHeight > usableHeight)
            return realHeight - usableHeight;
        else
            return 0;
    }
    return 0;
}

参照:

Android のステータス バーの高さ

ソフトボタンバーの寸法

于 2015-04-01T20:34:09.203 に答える