我注意到,在调用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
我也尝试手动设置MeMeuredDimensions(),但是这一手不会影响日志.
有人可以告诉我这里我做错了什么,或者在调用onMeasure()之后如何获得SurfaceView的宽度/高度?
解决方法
在这里使用getMeasuredWidth / Height(). getWidth / Height()在布局之后才有效.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。