2

我有一个应用程序,用户可以在其中拍照或从图库中选择图片。在下一页上,我使用onGlobalLayout来确定 a 的大小View。当用户从图库中选择图片时,View尺寸会正确返回onGlobalLayout。但是,当用户拍照时,Status Bar顶部的 是不可见的。当下一个活动出现时,Status Bar从顶部滑入会改变屏幕大小,但onGlobalLayout不会考虑这一点,因此会返回错误的视图大小。

这似乎是 Android 的一个错误,我正在考虑提交错误报告。但是,有人对此有任何解决方法吗?

例子:

public class MyView extends View implements OnGlobalLayoutListener {

    @Override
    public void onGlobalLayout() {
        Log.d("MyView", "Width: " + getWidth());
        Log.d("MyView", "Height: " + getHeight());
    }
}

上面的代码将返回两个不同的宽度和高度,具体取决于我返回的屏幕是否有状态栏。

谢谢

4

1 回答 1

0

您可以在您的视图中覆盖fitSystemWindows以获取大小StatusBar并相应地计算您的视图大小,请参阅我的答案here作为示例。

另一种解决方案,但不太通用且更麻烦,是根据预定义的状态栏高度列表调整大小,因为 android 根据设备屏幕密度为状态栏设置了固定大小。

我认为这不是android中的错误。

于 2013-02-11T03:45:42.860 回答