问题描述
看到这个答案
如果您的API级别> 13,请在活动时尝试
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
如果您不在活动中,则可以通过WINDOW_SERVICE获取默认的显示:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
getWidth和getHeight适用于API级别13或更低
对于API
17和更高版本的方法,Display.getRealSize()
将返回完整的屏幕尺寸,如文档中所述:
获取显示的实际大小,而不减去任何窗口装饰或应用任何兼容性比例因子。
尺寸根据显示器的当前旋转进行调整。
当窗口管理器模拟较小的显示时(使用adb shell am display-size),实际尺寸可能小于屏幕的物理尺寸。
解决方法
我想获取运行我的应用程序的设备的实际屏幕高度。为此,我尝试以下操作:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int Height = metrics.heightPixels;
TextView HeightView = (TextView) findViewById(R.id.screenHeight);
HeightView.setText("Screen Height: " + Height);
int Width = metrics.widthPixels;
TextView WidthView = (TextView) findViewById(R.id.screenWidth);
WidthView.setText("Screen Width: " + Width);
我使用模拟器运行的设备的屏幕宽度为1080像素,屏幕高度为1920像素。宽度可以正确显示(1080像素),但根据应用程序,高度仅为1776像素。我需要什么来使我的应用显示正确的屏幕高度?是metrics.heightPixels
让屏幕高度的好方法?