Android 10“平板电脑中的状态栏高度

时间:2014-04-24 04:36:03

标签: android

我想获得活动的可显示高度。但是,我从下面的片段获得的显示高度还包括状态栏高度。

int screenHeight = context.getResources().getDisplayMetrics().heightPixels;

我想要的是高度从状态栏的底部边缘或屏幕的上边缘开始到底部导航栏的顶部边缘(如Nexus 4)或屏幕的下边缘(如三星Galaxy) S4)即可。所以我所做的是从上面的片段中获取高度像素,然后扣除状态栏高度

int screenHeight = ![context.getResources().getDisplayMetrics().heightPixels][1];
int statusBarHeight = 0;
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
    statusBarHeight = context.getResources().getDimensionPixelSize(resourceId);
}

int displayableHeight = screenHeight - statusBarHeight;

此代码段仅适用于手机和7英寸平板电脑。但在10英寸平板电脑上(我在屏幕上的任何位置都看不到状态栏),statusBarHeight代码段返回50px。这导致displayableHeight比用户在屏幕上看到的少50px。

你知道为什么10“平板电脑报告状态栏高度= 50px,因为没有在屏幕上显示,我该如何解决这个问题?

最佳

enter image description here

1 个答案:

答案 0 :(得分:1)

您获取尺寸,而不是视图的实际高度,当然隐藏时不会重置尺寸。您需要获取系统装饰并从中获取值。