7

所以我在我的活动中编写了以下方法:

private void setDisplayMetrics(){

    DisplayMetrics metrics = this.getResources().getDisplayMetrics();
    int dh       = metrics.heightPixels;
    int dw       = metrics.widthPixels;

    if(dw < dh){
        deviceWidth  = dw;
        deviceHeight = dh;
    }else{
        deviceWidth  = dh;
        deviceHeight = dw;
    }

    System.err.println("--------------> dh : "+deviceHeight+" | dw "+deviceWidth);

}

它工作得很好,从某种意义上说,它以极高的准确性和可靠性让我获得了屏幕的总宽度和高度(这是我要求它做的)。

这是问题所在。在较旧的 android 设备上,屏幕尺寸与应用程序可以占用的尺寸相同,上面的脚本帮助我设置应用程序中元素的大小。但是对于 android ICS,我在屏幕底部有这个图形按钮栏,它弄乱了我的整个策略。

在此处输入图像描述

我真正想要的是能够以一种方法同时获得纵向视图和横向视图的可用应用程序尺寸。并且无论上图所示的条是否存在,这些尺寸都是准确的。

有谁知道如何实现这一目标?

4

2 回答 2

0
Rect rectgle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int StatusBarHeight= rectgle.top;
int contentViewTop= 
    window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
int TitleBarHeight= contentViewTop - StatusBarHeight;

   Log.i("*** Jorgesys :: ", "StatusBar Height= " + StatusBarHeight + " , TitleBar Height = " + TitleBarHeight); 
于 2012-10-30T04:42:25.613 回答
0

根据我目前所读到的内容,您无法直接获得这个高度。通过 getWindowVisibleDisplayFrame() 的方法似乎不起作用。到目前为止,我发现的唯一有希望的解决方案是使用自定义布局来测量屏幕尺寸,如 http://evgeni-shafran.blogspot.de/2011/01/android-screen-size-problem.html中所述。我相信这会奏效,但对我来说,这似乎比它的价值更麻烦。

于 2012-12-20T20:38:00.637 回答