Android中的getSize()是否包括状态栏的高度?

问题描述 投票:0回答:1

是否有办法判断getSize()是否包含状态栏的高度?通过在一些不同的手机上进行测试,似乎它可以在某些手机上执行,但不能在其他手机上执行,并且在尝试使布局中的所有内容正确对齐时令人沮丧。

[花了一个星期解决这个问题,并在Stackoverflow上查看了Google的文档和许多其他文章(关于通过getSize()getRealSize()getMetrics(DisplayMetrics metrics)getRealMetrics(DisplayMetrics metrics)等获取屏幕尺寸,以像素为单位...我仍然对此一无所知。

This picture is giving a better picture of the problem.

在某些手机上,根据上图,“ Y / 2”行应准确位于size.y / 2(导航和状态栏之间的屏幕正好一半),但实际上是not中间:因此我图片上的“非X”距离等于“ X-getStatusBarSize()”。

我必须补充一点,我正在XML中使用带有innerRadiusRatio 2.1的环形对象。但是我不认为这是原因,因为一旦我使用下面的代码,它就可以在手机上运行,​​其中getSize()似乎包含状态栏的高度:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Screen dimensions
        display = getWindowManager().getDefaultDisplay();
        size = new Point();
        display.getSize(size);

       //Get the screen dimensions
       maxWidth = size.x 
       maxHeight = size.y - getStatusBarSize();
   }

private int getStatusBarSize() {
        Resources resources = getResources();
        int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            return resources.getDimensionPixelSize(resourceId);
        }
        return 0;
    }

虽然它仅可在其他电话上与maxheight = size.y一起使用(但不包括状态栏高度)。

感谢大家的帮助!

android height pixel android-statusbar
1个回答
0
投票

我或多或少都面临着同样的问题,这可能会有所帮助:

// Get the size between the status & the navigation bars
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);

// Real size of the screen (full screen)
Point realSize = new Point();
Display realDisplay = getWindowManager().getDefaultDisplay();
realDisplay.getRealSize(realSize);

//Get the screen dimensions
maxWidth = size.x;
maxHeight = size.y;

if (realSize.y - getNavBarSize() == size.y || realSize.y == size.y) {
    Log.d(TAG, "onCreate: getSize() includes the status bar size");
    maxHeight = size.y - getStatusBarSize();
}
© www.soinside.com 2019 - 2024. All rights reserved.