3

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

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

4

4 回答 4

6

尝试查看 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 替换为您想要的视图对象。希望它可以提供帮助。

于 2014-09-15T08:07:03.847 回答
-1

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

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

最终 int 高度 = dm.heightPixels; 最终 int 宽度 = dm.widthPixels;

于 2012-12-02T17:58:53.883 回答
-1

Hopefully this line of code will work for you. i use this when i want height n width of the screen

// get screen width/height

          DisplayMetrics metrics = new DisplayMetrics();
          getWindowManager().getDefaultDisplay().getMetrics(metrics); height =
          metrics.heightPixels; width = metrics.widthPixels;
于 2012-12-02T19:24:46.853 回答
-2

给你的主要布局元素一个 id:

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

然后得到它的高度setContentView()

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

另请参阅此问题以获取更多信息。

于 2012-12-02T17:47:01.333 回答