2012-11-30 45 views

回答

10

如果您想要应用程序窗口的大小,可以调用yourview.getHeight()和yourview.getWidth();但必须为此而努力。

如果你想获得高度它的绘制之前,你可以这样做:

https://stackoverflow.com/a/10134260/1851478

有很多的画面/图测量的不同情况虽然如此,如果你能具体谈谈“应用程序窗口的实际大小”,这是你的应用程序吗?或主屏幕应用程序?,其他一些应用程序?

如果你想要可用空间减去装饰(状态栏/软按钮),你也可以反向攻击它,例如测量实际屏幕尺寸(方法因API而异),然后减去状态栏。

示例显示高度:

((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight(); 

状态栏的高度:

Rect rectgle= new Rect(); 
Window window= getWindow(); 
window.getDecorView().getWindowVisibleDisplayFrame(rectgle); 
int StatusBarHeight= rectgle.top; 

或者

int statusBarHeight = Math.ceil(25 * context.getResources().getDisplayMetrics().density); 

许多不同的方式来做到这一点。

当然需要更多的信息给你,但给出更准确的答案。

+0

谢谢,它自己的活动方面我之后。父视图宽度/高度会为我做,但正如你所说,需要首先绘制视图。 –

+0

很酷,我提供的链接应该为你做,但你可以忽略关于测量后隐藏的部分。或者,在绘制视图后调用.getHeight()和.getWidth()(例如,在已经调用setContentView(R.layout.yourview)的活动中; – logray

+0

“如果要在绘制之前获取高度,可以这样做:“ - 然后你提供了一些代码的链接,这些代码只能确定视图膨胀后的尺寸 – AndroidDev

5

这也很容易:

Rect windowRect = new Rect(); 

yourView.getWindowVisibleDisplayFrame(windowRect); 

int hWindow = windowRect.bottom - windowRect.top; 
int wWindow = windowRect.right - windowRect.left; 
相关问题