軟按鈕欄的尺寸
回答
開始的Andorid 3.2,系統狀態欄的高度不包括在DisplayMetrics的身高,你必須使用無證的API(Display.getRawWidth()和Display.getRawHeight())來獲取物理屏幕的寬度或高度。
Method mGetRawW = Display.class.getMethod("getRawWidth");
Method mGetRawH = Display.class.getMethod("getRawHeight");
int nW = (Integer)mGetRawW.invoke(dp);
int nH = (Integer)mGetRawH.invoke(dp);
更新:對於API 13-16,你必須使用上面的代碼來獲得真正的寬度/高度。對於API 17+,您現在可以使用新的公共API,Display.getRealSize()
此方法對於在Android KitKat(4.4)中設置佈局填充非常有用。使用此功能,您可以避免軟按鈕欄與佈局重疊。
的getRealMetrics
方法僅適用於API 17和+,但我只使用以下的方法對我的設備上寫API 19+
@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;
}
測試後的Nexus 5 &的Nexus 7 2013
看來,錯誤的結果被返回爲橫向屏幕模式 – Sergii 2015-02-01 22:53:12
我沒有任何問題與橫向模式。您的方法是否在輪換更改時再次調用? – chteuchteu 2015-02-02 12:36:38
不,我的意思是在某些情況下,你需要檢查寬度的差異,但不是高度。當軟鍵位於風景模式旋轉屏幕的右側時? – Sergii 2015-02-02 21:17:22
對於遇到此問題的人來說,這是一個非常晚的答案。獲取大量可用空間以抵消任何軟鍵/導航欄甚至狀態欄的簡單方法是使用Apps DecorView中的getWindowVisibleDisplayFrame(Rect)。這將加載一個Rect對象,其中包含實際可用的顯示尺寸。
由於您無法直接獲取對Activiy的DecorView的引用,因此您需要先使用訪問器方法getWindow()獲取Activity的窗口。這將返回包含Activity和其他屏幕元素的窗口對象。要獲取包含活動的decorView以及屏幕裝飾,即狀態欄,導航欄/軟按鈕欄,調用訪問器方法getDecorView()。一旦你有一個DecorView調用getWindowVisibleDisplayFrame(Rect)的引用,並且你將有一個加載的Rect對象。
- 1. 按鈕輪廓大於按鈕尺寸
- 2. 按鈕:最小尺寸
- 3. 按鈕尺寸不變
- 4. BlackBerry ChoiceField按鈕尺寸
- 5. 理想按鈕尺寸
- 6. iOS8上的按鈕尺寸不正確,iOS7上的按鈕尺寸正確
- 7. UINavigation欄按鈕的背景圖像尺寸
- 8. 更改屏幕尺寸的按鈕尺寸Android Studio
- 9. 更改導航欄後退按鈕圖像尺寸全球
- 10. 使用樣式設置工具欄按鈕尺寸
- 11. 如何根據屏幕尺寸更改按鈕尺寸?
- 12. 根據屏幕尺寸調整按鈕尺寸
- 13. html使圖像按鈕尺寸等於圖像尺寸
- 14. 在CSS中尺寸均勻的按鈕?
- 15. 使相同尺寸的黑莓按鈕
- 16. 按鈕的尺寸不一樣
- 17. 是否有標準的按鈕尺寸?
- 18. CSS - 不同尺寸的按鈕對齊
- 19. 的Android圖像按鈕縮放/尺寸
- 20. Android:按鈕上的全尺寸文本
- 21. Windows Phone 8.1按鈕的最小尺寸
- 22. 如何獲得JFrame的按鈕尺寸?
- 23. 縮小UINavigationBar按鈕的尺寸
- 24. 沒有狀態欄和軟鍵的Android屏幕尺寸
- 25. 按下按鈕時更改按鈕尺寸
- 26. 鎖定自定義按鈕尺寸
- 27. 如何更改按鈕尺寸?
- 28. 減少自定義按鈕尺寸
- 29. 浮動按鈕尺寸自動變化
- 30. 屏幕尺寸與按鈕位置
什麼是dp in(Integer)mGetRawW.invoke(dp);它將返回包含軟菜單的高度。 – Herry 2015-08-12 14:11:32
它給了我一個NoSuchMethodException異常。 – DevAndroid 2015-11-19 09:09:39
什麼是dp?也找不到這兩種方法(NoSuchMethod異常) – Alqueraf 2016-04-05 16:00:22