3

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

我知道我可以根据设备的分辨率减去一个常数,但这是一个超级丑陋的黑客。我相信谷歌的人不会愚蠢到忘记给用户一个函数来获取底部菜单栏的高度,这样我就可以从全屏尺寸中减去它

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

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

what_i_need =metrics.heightPixels-buttomMenuHeight();

我需要按钮菜单高度();

我在 API 中找不到它。在这一点上,我真的不在乎向后可比性

谢谢

4

3 回答 3

7

为什么不使用activity的顶层View的高度呢?例如,如果您的活动包含一个全高 LinearLayout,请使用它的高度,这样您就不必知道菜单高度或通知栏高度。

我认为您在进行这种计算时正在走一条危险的道路,因为您不知道 Android 的未来布局可能是什么,或者它们在 Google TV 上可能会有什么不同,等等。

于 2011-03-02T21:52:46.470 回答
1

尝试在 onLayout 之后调用 getHeight()。视图在膨胀时没有调整大小。

编辑:或者由于 Activity 没有 onLayout,您可能会等待 onSizeChanged。

(参考如何知道活动何时布局?

于 2011-03-09T04:55:26.920 回答
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,我希望获得全屏高度。

于 2011-03-02T22:40:21.663 回答