Que*_* S. 15
此方法对于在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) {
return 0;
}
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int usableHeight = metrics.heightPixels;
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
int realHeight = metrics.heightPixels;
return realHeight > usableHeight ? realHeight - usableHeight : 0;
}
Run Code Online (Sandbox Code Playgroud)
在Nexus 5和Nexus 7 2013上进行了测试.
从 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);
Run Code Online (Sandbox Code Playgroud)
更新:对于 API 13-16,您必须使用上面的代码来获取真实的宽度/高度。对于 API 17+,您现在可以使用新的公共 API,Display.getRealSize()
| 归档时间: |
|
| 查看次数: |
12451 次 |
| 最近记录: |