如何获取Activity的内容高度?

时间:2014-03-11 11:05:38

标签: android height

我有一个没有操作栏的活动,并尝试获得它的高度。

使用分辨率1200x1920;

在Nexus 7 2013上测试

使用DisplayMetrics:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenHeight = metrics.heightPixels;

然后screenHeight为1824。 实际高度(1920)与screenHeight之间的差异是由于状态栏。

但是当我检查它的根视图时:

final View root = findViewById(R.id.root);
root.post(new Runnable() {
  @Override
    public void run() {
    Log.d("TAG", "Root @w=" + root.getWidth() + " @h=" + root.getHeight());
}});

身高的结果是:1774。 由于虚拟键(BACK,HOME,SWITCH APP),内容高度小于屏幕高度。

总结:screen height = statusbar height (if have) + actionbar height (if have) + root content height + virtual key height (if have)

因此,如果我们获得内容高度,请不要依赖DisplayMetrics。我认为从根内容中获取高度是最佳解决方案。

嗯,现在是真正的问题:我希望立即获得root内容高度(这意味着不要在Runnable中运行)。有什么建议吗?

0 个答案:

没有答案