Androidソフトボタンバーとステータスバーの合計サイズを取得する方法はありますか?これらの両方のバーの高さなしで画面の高さを取得する方法はありますか?常に同じ、例えばネクサス7を見てください)
ステータスバーの高さ
ステータスバーの高さは画面サイズに依存します。たとえば、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;
}
_
参照: