getWidth() 和 getHeight 在 onMeasure() 之后返回零(特定设备)

2024-05-24

我注意到在调用 onMeasure() 后,我的应用程序的视图为 getWidth() 和 getHeight() 返回 0。这种情况只发生在少数设备上,对于大多数 Android 设备,以下代码可以正常工作。我的 checkViewAndLoad() 函数根据视图的大小加载缩放的位图。

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    Log.d("widthMeasureSpec", Integer.toString(MeasureSpec.getSize(widthMeasureSpec)));
    Log.d("heightMeasureSpec", Integer.toString(MeasureSpec.getSize(heightMeasureSpec)));
    Log.d("viewWidth", Integer.toString(getWidth()));
    Log.d("viewHeight", Integer.toString(getHeight()));

    checkViewAndLoad();
}

以下是设备 (Motorola Droid Razr Maxx) 的日志,该设备在 onMeasure() 之后 getWidth()/getHeight() 返回零:

09-03 20:55:58.359: D/widthMeasureSpec(29496): 540
09-03 20:55:58.359: D/heightMeasureSpec(29496): 720
09-03 20:55:58.359: D/viewWidth(29496): 0
09-03 20:55:58.359: D/viewHeight(29496): 0

我还尝试手动 setMeasuredDimensions() ,但这对日志没有影响。

有人可以告诉我我在这里做错了什么,或者如何在调用 onMeasure() 后获取 SurfaceView 的宽度/高度?


Use getMeasuredWidth/Height() here. getWidth/Height()在布局之后才有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

getWidth() 和 getHeight 在 onMeasure() 之后返回零(特定设备) 的相关文章

随机推荐