Android 如何获得实际屏幕高度?

Android 如何获得实际屏幕高度?,android,Android,我正在尝试获取屏幕高度,这是 DeviceScreenHeight - NavigationBarHeight - TitleBarHeight 下面的代码总是给我752,但实际屏幕高度是800 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); mHeight = metrics.heightPixe

我正在尝试获取屏幕高度,这是

    DeviceScreenHeight - NavigationBarHeight - TitleBarHeight
下面的代码总是给我752,但实际屏幕高度是800

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    mHeight = metrics.heightPixels;
如果我使用onLayoutChange()来获取垂直“match_parent”视图的高度,则高度为696。这就是我需要的价值

但我想知道如何动态获取该值,以便在不同的设备上获得适当的“高度”。

试试看

mWinMgr = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
int displayHeight = mWinMgr.getDefaultDisplay().getHeight();
其中context是context实例。

试试看

mWinMgr = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
int displayHeight = mWinMgr.getDefaultDisplay().getHeight();
其中context是context实例。

我找到了代码

我找到了密码


我会这样做

  RelativeLayout root = (RelativeLayout) findViewById(R.id.relativeLayout1);
    root.post(new Runnable() {
        public void run() {
            Rect rect = new Rect();
            Window win = getWindow();
            win.getDecorView().getWindowVisibleDisplayFrame(rect);
            int statusHeight = rect.top;
            int contentViewTop = win.findViewById(Window.ID_ANDROID_CONTENT).getTop();
          int   titleHeight = contentViewTop - statusHeight;

            DisplayMetrics metrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(metrics);
            int metricsheights=metrics.heightPixels-titleHeight-contentViewTop-statusHeight;

我会这样做

  RelativeLayout root = (RelativeLayout) findViewById(R.id.relativeLayout1);
    root.post(new Runnable() {
        public void run() {
            Rect rect = new Rect();
            Window win = getWindow();
            win.getDecorView().getWindowVisibleDisplayFrame(rect);
            int statusHeight = rect.top;
            int contentViewTop = win.findViewById(Window.ID_ANDROID_CONTENT).getTop();
          int   titleHeight = contentViewTop - statusHeight;

            DisplayMetrics metrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(metrics);
            int metricsheights=metrics.heightPixels-titleHeight-contentViewTop-statusHeight;

谢谢你的回复,但是你写的和我写的一样。我想要的是设备\u高度-标题\u高度-导航\u栏\u高度,在这种情况下,它不起作用。谢谢你的回复,但你写的和我一样。我想要的是设备\u height-title\u hight-navigation\u bar\u height,在这种情况下,它不起作用。谢谢你的回复,但你的代码给出的结果与我的代码相同。谢谢你的回复,但你的代码给出的结果与我的代码相同。