安卓获取纵向和横向可用高度和宽度

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上,我有一个位于屏幕底部的图形按钮栏,它会破坏我的整个策略。

enter image description here

我真正想要的是一种方法,可以同时获取纵向视图和横向视图的可用应用程序尺寸,并且无论是否存在上述按钮栏,这些尺寸都是准确的。

有人知道如何实现吗?


这将会帮助到你:https://dev59.com/D1TTa4cB1Zd3GeqPuazF - Mohammed Azharuddin Shaikh
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); 

状态栏不是在顶部的那个吗? - Fresheyeball
2
我得到了StatusBarHeight、contentViewTop和TitleBarHeight的值为0。 - Fresheyeball

0
从我迄今所读的内容来看,您无法直接获取此高度。通过 getWindowVisibleDisplayFrame() 方法似乎行不通。 到目前为止,我找到的唯一有希望的解决方案是使用自定义布局来测量屏幕大小,正如 http://evgeni-shafran.blogspot.de/2011/01/android-screen-size-problem.html 中所述。 我相信这会起作用,但对我来说,这似乎不值得麻烦。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接