在我的应用程序中,我正在使用windowManager.getDefaultDisplay()来确定屏幕大小。
使用新的三星S8导航栏,可以使用'点'来显示和隐藏在左下方,我得到显示或隐藏的导航栏相同的显示大小。它总是返回显示大小,就像显示导航栏一样 - 当导航栏被隐藏时,我希望得到1080x2220,但总是得到1080x2076。
有什么方法可以通过编程方式区分案例并获得正确的屏幕尺寸,以便我可以正确显示我的应用程序?
答案 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