android获取纵向和横向的高度和宽度

时间:2012-10-30 04:09:06

标签: java android android-layout

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

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 我在屏幕底部有这个图形按钮栏,这会让我的整个策略变得混乱。

enter image description here

我真正想要的是能够在一种方法中同时获取纵向视图和横向视图的可用应用维度。无论上图所示的条形图如何,这些尺寸都是准确的。

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

2 个答案:

答案 0 :(得分: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); 

答案 1 :(得分:0)

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