在Galaxy S8上获得正确的屏幕显示大小

时间:2017-09-13 16:37:42

标签: android screen-size samsung-s8

在我的应用程序中,我正在使用windowManager.getDefaultDisplay()来确定屏幕大小。

使用新的三星S8导航栏,可以使用'点'来显示和隐藏在左下方,我得到显示或隐藏的导航栏相同的显示大小。它总是返回显示大小,就像显示导航栏一样 - 当导航栏被隐藏时,我希望得到1080x2220,但总是得到1080x2076。

有什么方法可以通过编程方式区分案例并获得正确的屏幕尺寸,以便我可以正确显示我的应用程序?

2 个答案:

答案 0 :(得分:2)

我遇到了与您相同的问题,我找到的解决方案是衡量内容 视图的高度:

findViewById(android.R.id.content).getHeight()
希望它会对你有所帮助。

点击此处查看有关android.R.id.content

的详细信息

答案 1 :(得分:1)

我也有同样的问题,但内容根视图的解决方案对我没用(我得到的高度是2148)。

但我可以用装饰视图来解决这个问题:

    //Get the correct screen size even if the device has a hideable navigation bar (e.g. the Samsung Galaxy S8)
    View decorView = getWindow().getDecorView(); //if you use this in a fragment, use getActivity before getWindow()
    Rect r = new Rect();
    decorView.getWindowVisibleDisplayFrame(r);
int screenHeight = r.bottom; // =2220 on S8 with hidden NavBar and =2076 with enabled NavBar
int screenWidth = r.right; // =1080 on S8