您的位置:首页 > 编程语言 > Java开发

getMeasuredWidth()导致java.lang.IllegalArgumentException异常

2017-01-04 14:08 323 查看
在写毛玻璃特效时遇到了view 宽高必须大于0的非法参数异常

Caused by: java.lang.IllegalArgumentException: width and height must be > 0


导致原因:

因为我直接把View.getWidth、View.getHeight()、View.getMeasuredWidth() 、View.getgetMeasuredHeight()测量方法放在oncreat() 方法view的初始化里,当view还没有加载完成时就走了这个方法,当时测量的宽高就为0了,就会报这个异常。


我们都知道将View.getWidth、View.getHeight()、View.getMeasuredWidth() 、View.getgetMeasuredHeight()测量view的宽度和高度方法放在点击事件、触摸事件的回调里使用。就不会出现这个问题。但是有时需求不让我们点击时触发,让我们界面出现时就测量,就会出现宽高为0情况。

解决方法:

1、如果我们又不想放在点击事件的回调里使用,我们可以开启线程,让测量方法在初始化500毫秒后执行,当时测量的方法也可以防止值为0;

2、我们可以在onWindowFocusChanged(boolean hasFocus)里执行测量操作

@Override
public void onWindowFocusChanged(boolean hasFocus) {
//测量操作
。。。
super.onWindowFocusChanged(hasFocus);
}


希望我的方法能够帮助到你解决宽高为0的问题!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: