关于onmeasure

关于onmeasure

自定义view,onmeasure方法的两个参数是由xml该自定义view的父布局如linearlayout的宽高决定的吗?事实上这两个传入的参数和子类xml中自定义view我们设置的宽高有无关系?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

onMeasure方法是虽然是view自己的方法,但是是由父控件调用的,主要是用来测量自己和内容的来确定宽度和高度,参数是父控件传过来的表示控件可获得的空间。如果你的自定义View的尺寸是根据父控件行为一致,就不需要重写onMeasure()方法。如果不重写onMeasure方法,那么自定义view的尺寸默认就和父控件一样大小,当然也可以在布局文件里面写死宽高,而重写该方法可以根据自己的需求设置自定义view大小。

  • 慕莱坞3708540 提问者 #1
    参数是父控件传过来的表示控件可获得的空间。主要这句话,这个可获得的空间是根据什么计算出来的?是父控件的父控件和父控件协商出来的空间?还是父控件和子控件初步协商出来的空间?因为一个树型view中,父控件有很多的同级控件,子控件也有很多同级控件。这个可获得的空间是怎么协商的?
    2018-02-11 13:02:46
  • irista23 回复 提问者 慕莱坞3708540 #2
    可获得的空间是父类传过来的,注意这个方法是测量,父控件会遍历其所有子控件并依次调用子控件的measure方法,measure方法会调用onMeasure,然后会保存测量的大小,一次遍历下来,第一个子控件以及这个子控件中的所有子控件都会完成测量工作,这个过程也不是就执行一次,如果父控件发现某一个子控件的尺寸不符合要求,就会重新测量一遍。
    2018-02-11 14:01:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android多媒体开发与应用2018版
  • 参与学习           人
  • 解答问题       241    个

本专题是动画、游戏、音视频等实际应用开发必备技能。课程深入到Android事件总线,利用主流框架实现消息推送、自定义事件统计分析等功能。最后带你开发一款利用传感器实现计步、距离、热量等功能的App。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师