获取视图的可见高度

时间:2012-12-02 15:01:43

标签: android android-activity

状态栏打开后,是否可以知道活动的可见高度?

我想知道屏幕的可见高度。

4 个答案:

答案 0 :(得分:4)

尝试查看treeobserver方法.. 喜欢:

   main_layout.getViewTreeObserver().addOnGlobalLayoutListener(
            new OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() 
                    {

                        Rect r = new Rect();
                        // r will be populated with the coordinates of your view
                        // that area still visible.
                        main_layout.getWindowVisibleDisplayFrame(r);

                        int heightDiff = main_layout.getRootView().getHeight()-(r.bottom -r.top);

                    }
    });

将main_layout替换为您想要的View对象。 希望它可以提供帮助。

答案 1 :(得分:-1)

myLayout.getHeight();只有在它显示在屏幕之前它才会返回视图的实际可见高度,之前它只会是0。 如果你真的有兴趣了解myLayout.getHeight(),那么你可能想在屏幕上显示视图后进行检查

如果您想知道屏幕的高度/宽度,那么您可以考虑使用以下代码: DisplayMetrics dm = new DisplayMetrics(); getWindowManager()getDefaultDisplay()getMetrics(DM);

final int height = dm.heightPixels; final int width = dm.widthPixels;

答案 2 :(得分:-1)

希望这行代码适合您。当我想要屏幕的高度n宽度时,我会使用它

// get screen width/height

          DisplayMetrics metrics = new DisplayMetrics();
          getWindowManager().getDefaultDisplay().getMetrics(metrics); height =
          metrics.heightPixels; width = metrics.widthPixels;

答案 3 :(得分:-2)

为您的主要布局元素添加ID:

<LinearLayout id="myLayout">
    ...
</LinearLayout>

然后在setContentView()之后得到它的高度:

View myLayout = (View) findViewById(R.id.myLayout);
int height = myLayout.getHeight();

另请参阅this question了解详情。