Androidでソフトボタンバーとステータスバーのサイズを合わせて取得する方法はありますか? または、これら両方のバーの高さなしで画面の高さを取得する方法はありますか? (それらは常に同じであるとは限りません。たとえば nexus 7 を見てください)
37170 次
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;
}
参照:
于 2015-04-01T20:34:09.203 に答える