1

我正在尝试以编程方式获取我的应用程序的可用屏幕区域。为此,我正在使用getWindowManager().getDefaultDisplay().getSize(). 但是,我不太确定与此“默认显示窗口”相对应的屏幕区域到底是什么。

它似乎包含了除导航栏外的整个屏幕(包括通知栏)。这个对吗 ?有例外吗?

4

2 回答 2

2

从文档中:

获取显示的大小,以像素为单位。

请注意,此值不应用于计算 layouts,因为设备通常会在显示器边缘具有屏幕装饰(例如状态栏),这会减少此处返回的大小可用的应用程序空间量。布局应改为使用窗口大小。

大小根据显示器的当前旋转进行调整。

此方法返回的尺寸不一定代表显示器的实际原始尺寸(原始分辨率)。可以调整返回的大小 以排除某些始终可见的系统装饰元素。它还可以扩展以提供与最初为较小显示器设计的旧应用程序的兼容性。

强调我的。所以是的,他们可能会从中排除导航栏,但不一定。

于 2013-03-21T22:51:36.003 回答
0

是的,它包括您的应用程序可用的所有空间(即,不包括状态和通知栏等操作系统级别的组件)。

但是,大小确实会根据您是否使用setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);隐藏通知和状态栏并暂时为您的应用程序提供更多空间等方法而改变。

于 2013-03-21T22:47:48.767 回答