软按钮栏的尺寸

Dir*_*tad 9 android

有没有办法确定没有硬菜单按钮的设备菜单栏的尺寸(宽度)?(像archos设备).

我需要知道屏幕的可用尺寸......

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上进行了测试.

  • 不,我的意思是在某些情况下你需要检查宽度差异而不是高度差异.当软键位于横向模式旋转屏幕的右侧时? (2认同)

use*_*349 0

从 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()