Androidでソフトボタンバーとステータスバーのサイズを一緒に取得する方法はありますか?または、これら両方のバーの高さなしで画面の高さを取得する方法はありますか?(それらは常に同じではありません。たとえば、ネクサス7を見てください)
ステータスバーの高さ
ステータスバーの高さを有するデバイスでは、例えば、画面サイズに依存240 X 320ステータスバーの高さは、画面サイズ20ピクセルを有するデバイスのために、320×480の画面サイズは、ステータスバーの高さは25ピクセルを有するデバイスのために、480 x800ステータスバーの高さは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
メソッドは、API17および+でのみ使用できます。
@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;
}
参照:
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加