getMeasuredWidth()导致java.lang.IllegalArgumentException异常
2017-01-04 14:08
323 查看
在写毛玻璃特效时遇到了view 宽高必须大于0的非法参数异常
导致原因:
我们都知道将View.getWidth、View.getHeight()、View.getMeasuredWidth() 、View.getgetMeasuredHeight()测量view的宽度和高度方法放在点击事件、触摸事件的回调里使用。就不会出现这个问题。但是有时需求不让我们点击时触发,让我们界面出现时就测量,就会出现宽高为0情况。
解决方法:
1、如果我们又不想放在点击事件的回调里使用,我们可以开启线程,让测量方法在初始化500毫秒后执行,当时测量的方法也可以防止值为0;
2、我们可以在onWindowFocusChanged(boolean hasFocus)里执行测量操作
希望我的方法能够帮助到你解决宽高为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的问题!
相关文章推荐
- SpringMVC的各种参数绑定方式
- Spring Boot搭建可配置Quartz2
- Springboot的第一个Hello World程序
- 对Java Serializable(序列化)的理解和总结
- java线程停掉的三种方式
- java pdf转成一张图片
- 使用Intellij创建第一个Springboot程序
- java-String Date Calendar之间的转换
- Java中枚举的梗
- Java线上应用故障排查之一:高CPU占用
- java项目框架搭建之一:Servlet+JSP+MySql
- struts2拦截器配置
- 国际化,java.util.ResourceBundle使用详解
- Spring MVC的拦截器
- 第五章 处理器拦截器详解——跟着开涛学SpringMVC
- JAVA设计模式(一)-开篇
- Java基础学习总结(94)——Java线程再学习
- Java基础学习总结(94)——Java线程再学习
- Java学习笔记之JDK配置的作用和方法(含set设置临时环境变量)
- Retrofit与RxJava结合并进行封装