2

我有一个问题,我需要 android 平板电脑系统栏的高度。这和这里的问题一样,但我不能使用这个答案,因为它给了我与 DisplayMetrics 相同的大小。在这两种方式中,我都得到了这个栏已经计算好的分辨率。(这个问题没有出现在我的智能手机上,只是出现在我的平板电脑上)。

4

3 回答 3

11
// status bar (at the top of the screen on a Nexus device) 
public static int getStatusBarHeight(Context context) {
    Resources resources = context.getResources();
    int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        return resources.getDimensionPixelSize(resourceId);
    }
    return 0;
}

// navigation bar (at the bottom of the screen on a Nexus device)
public static int getNavigationBarHeight(Context context) {
    Resources resources = context.getResources();
    int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
    if (resourceId > 0) {
        return resources.getDimensionPixelSize(resourceId);
    }
    return 0;
}
于 2013-11-01T00:11:50.407 回答
0

在此处查看此答案:https ://stackoverflow.com/a/8367739/807499

它给出了屏幕的整个高度。然后,您可以减去 DisplayMetrics 或根布局大小给出的大小。

于 2012-04-30T20:45:08.463 回答
0

Chris Banes 在最近的一次 Droidcon 演讲中提到了这一点。整个演讲非常相关,但这里有一个链接可以回答您的问题(适用于所有外形尺寸,包括平板电脑)。

https://youtu.be/_mGDMVRO3iE?t=1093

这是获取状态栏和导航栏大小的正确方法:setOnApplyWindowListener

我希望这有帮助!

于 2018-02-06T21:37:04.627 回答