屏幕尺寸蜂巢式菜单安卓系统

3

您好,我正在尝试获取屏幕大小减去底部菜单栏的大小。

我知道可以根据设备的分辨率减去一个常数,但这是一种非常丑陋的hack方法。我相信谷歌的工程师们不会愚蠢到忘记为用户提供一个函数来获取底部菜单栏的高度,以便我可以从全屏大小中减去它。

这是一个类似的帖子。 安卓通知栏和标题栏的大小?

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

what_i_need =metrics.heightPixels-buttomMenuHeight();

我需要 buttomMenuHeight(); 这个函数。

我在 API 中找不到这个函数。目前我并不关心它是否向后兼容。

谢谢。

3个回答

7

为什么不使用活动顶层视图的高度?例如,如果您的活动包含一个全高LinearLayout,请使用其高度,以便您无需了解菜单高度或通知栏高度。

我认为这种计算很危险,因为您不知道 Android 的未来布局可能是什么,或者它们在 Google 电视上可能有何区别。


我正在本地代码中绘制图像,需要将屏幕大小传递给C。我尝试通过视图的getHeight()获取高度,但即使在调用setContentView之后,它始终返回0。 - user498584

1
尝试在 onLayout 之后调用 getHeight()。视图在充气时未被调整大小。
编辑: 或者,由于Activity没有onLayout,您可以等待onSizeChanged。
(参考如何知道activity何时完成布局?

0

我正在使用本地代码绘制图像,需要将屏幕大小传递给C。

我尝试通过视图的getHeight()方法获取高度,但即使在调用setContentView后,它始终返回0。

RelativeLayout masterLayout = new RelativeLayout(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
masterLayout.setLayoutParams(params);
setContentView(masterLayout);

当我尝试使用masterLayout.getHeight()时,它返回0。我期望得到整个屏幕的高度,因为我使用了fill_parent。

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