【问题标题】:Status bar height in Android 10" tabletAndroid 10" 平板电脑中的状态栏高度
【发布时间】:2014-04-24 12:43:02
【问题描述】:

我想获取活动的可显示高度。但是,我从以下 sn-p 获得的显示高度还包括状态栏高度。

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

我想要的是从状态栏底部边缘或屏幕顶部边缘到底部导航栏顶部边缘(如 Nexus 4)或屏幕底部边缘(如三星 Galaxy)的高度S4)。所以我要做的是从 sn-p 上方获取高度像素,然后减去状态栏高度

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;

这个 sn-p 只能在手机和 7" 平板电脑上正常工作。但在 10" 平板电脑上(我在屏幕上的任何地方都看不到状态栏),statusBarHeight sn-p 返回 50px。这导致 displayableHeight 比用户在屏幕上看到的少 50px。

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

最好的

【问题讨论】:

    标签: android


    【解决方案1】:

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

    【讨论】:

    • 感谢您的评论,但是,我在setContentView之后在Activity的onCreate方法中调用了“getWindow().getDecorView().getHeight()”,它返回0 ...你知道为什么吗?或者那不是我想称呼的?
    • 因为尺寸不是在 onCreate 中计算的...当视图实际获得尺寸时可能会 onresume。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 2012-08-21
    相关资源
    最近更新 更多