软按钮栏的尺寸
回答
开始的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