1
回答
android 自定义view的理解
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

最近,一直在尝试在自定义view方面有所突破,也尝试分析了相关源码,分析到后来,还是云里雾里,大脑中没有什么印象。

在自定义的时候,往往需要进行这3步


1.测量——onMeasure():决定View的大小

2.布局——onLayout():决定View在ViewGroup中的位置

3.绘制——onDraw():如何绘制这个View。

在网上搜索了下,大家基本上都是给一通源码,然后进行分析。

我想问下,如果自定义view的时候,在什么情况下,需要覆写onMasure()?如果覆写这个方法的时候,我们一般需要考虑哪些因素?比如边距,view自身的宽高,等等

在什么情况下需要onLayout()?

我也看了一些自定义的view,有的也没有覆写这2个方法,也就是他直接采用了系统控件本来固有的方法了


举报
共有1个答案 最后回答: 2年前

.布局——onLayout():决定View在ViewGroup中的位置

这个错啦。onLayout是给容器类用的。由容器类在这个方法中决定控件实际的大小和摆放位置。对于view自身太大的关系。除非写的是容器类,并且需要自己控制摆放位置和大小,那么才需要重写。

如果需要控制控件的宽高,那么重写onMasure()。最终super.onMeasure(widthMeasureSpec, heightMeasureSpec);设置的值将变成控件的宽高。

顶部