最近,一直在尝试在自定义view方面有所突破,也尝试分析了相关源码,分析到后来,还是云里雾里,大脑中没有什么印象。
在自定义的时候,往往需要进行这3步
1.测量——onMeasure():决定View的大小
2.布局——onLayout():决定View在ViewGroup中的位置
3.绘制——onDraw():如何绘制这个View。
在网上搜索了下,大家基本上都是给一通源码,然后进行分析。
我想问下,如果自定义view的时候,在什么情况下,需要覆写onMasure()?如果覆写这个方法的时候,我们一般需要考虑哪些因素?比如边距,view自身的宽高,等等
在什么情况下需要onLayout()?
我也看了一些自定义的view,有的也没有覆写这2个方法,也就是他直接采用了系统控件本来固有的方法了
.布局——onLayout():决定View在ViewGroup中的位置
这个错啦。onLayout是给容器类用的。由容器类在这个方法中决定控件实际的大小和摆放位置。对于view自身太大的关系。除非写的是容器类,并且需要自己控制摆放位置和大小,那么才需要重写。
如果需要控制控件的宽高,那么重写onMasure()。最终super.onMeasure(widthMeasureSpec, heightMeasureSpec);设置的值将变成控件的宽高。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。