我有一个应用程序,用户可以在其中拍照或从图库中选择图片。在下一页上,我使用onGlobalLayout
来确定View
的大小。当用户从图库中选择图片时,View
会在onGlobalLayout
中正确返回Status Bar
尺寸。但是,当用户拍照时,顶部的Status Bar
将变为不可见。当下一个活动出现时,onGlobalLayout
会从顶部滑入,这会更改屏幕尺寸,但public class MyView extends View implements OnGlobalLayoutListener {
@Override
public void onGlobalLayout() {
Log.d("MyView", "Width: " + getWidth());
Log.d("MyView", "Height: " + getHeight());
}
}
不会考虑到这一点,因此会返回错误的视图大小。
这似乎是Android的一个错误,我正在考虑提交错误报告。但是,有没有人为此做过任何变通办法?
示例:
{{1}}
以上代码将返回两种不同的宽度和高度,具体取决于我返回的屏幕是否有状态栏。
由于
答案 0 :(得分:0)
您可以在视图中覆盖fitSystemWindows
以获取StatusBar
的尺寸并相应地计算视图尺寸,有关示例,请参阅my answer here。
另一个解决方案,但不那么通用和更麻烦,是根据预定义的status bar heights列表调整大小,因为android根据设备屏幕密度具有固定大小的状态栏。
我不认为它是android中的错误。