13
有沒有在Android的方式來獲得軟按鈕欄和狀態欄的大小togheter?或者在沒有這兩個酒吧的高度的情況下獲得屏幕高度的方法? (它們不總是相同的,看的關係7例如)狀態欄的如何獲取狀態欄和軟鍵按鈕欄的高度?
有沒有在Android的方式來獲得軟按鈕欄和狀態欄的大小togheter?或者在沒有這兩個酒吧的高度的情況下獲得屏幕高度的方法? (它們不總是相同的,看的關係7例如)狀態欄的如何獲取狀態欄和軟鍵按鈕欄的高度?
身高
狀態欄的高度取決於屏幕的尺寸,例如在一個裝置與240 X 320畫面尺寸的狀態欄的高度是20像素,用於將設備與320 X 480畫面尺寸的狀態欄的高度是25像素,用於與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;
}
參考:
哇非常感謝這個答案。我認爲第二種方法不會工作,如果你同時擁有狀態欄和軟按鈕欄,我猜測我錯了,我已經測試過了,它可以工作。 :D更好,它的工作原理和API 16也一樣! – Joske369 2015-04-01 21:15:41
@不客氣。我現在編輯;-) – 2015-04-01 21:20:24
只有一個問題,當狀態欄是軟按鈕欄,第一種方法返回25像素和softbuttons方法返回48像素(索尼xperia平板s) – Joske369 2015-04-01 21:34:25