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

时间:2012-02-10 05:43:54

标签: android

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

    DeviceScreenHeight - NavigationBarHeight - TitleBarHeight

下面的代码总是给我一个752,但真正的屏幕高度是800。

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    mHeight = metrics.heightPixels;

如果我使用onLayoutChange()来获取垂直“match_parent”视图的高度,则高度为696.这是我需要的值。

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

3 个答案:

答案 0 :(得分:0)

尝试

mWinMgr = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
int displayHeight = mWinMgr.getDefaultDisplay().getHeight();

其中context是Context实例。

答案 1 :(得分:0)

我会这样

  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;

答案 2 :(得分:-1)

我找到了THIS代码。

DisplayMetrics metrics = getBaseContext().getResources().getDisplayMetrics();         
int w = metrics.widthPixels;
int h = metrics.heightPixels;