Android对View的onMeasure方法理解

转载 2012年03月22日 15:30:19

  我们知道View在屏幕上显示出来要先经过measure和layout. 在调用onMeasure(int widthSpec, int heightSpec)方法时,要涉及到MeasureSpec的使用,MeasureSpec有3种模式分别是UNSPECIFIED, EXACTLY和AT_MOST, 那么这些模式和我们平时设置的layout参数fill_parent, wrap_content有什么关系呢。经过代码测试就知道,当我们设置width或height为fill_parent时,容器在布局时调用子view的measure方法传入的模式是EXACTLY,因为子view会占据剩余容器的空间,所以它大小是确定的。而当设置为wrap_content时,容器传进去的是AT_MOST, 表示子view的大小最多是多少,这样子view会根据这个上限来设置自己的尺寸。当子view的大小设置为精确值时,容器传入的是EXACTLY, 而MeasureSpec的UNSPECIFIED模式目前还没有发现在什么情况下使用。

  View的onMeasure方法默认行为是当模式为UNSPECIFIED时,设置尺寸为mMinWidth(通常为0)或者背景drawable的最小尺寸,当模式为EXACTLY或者AT_MOST时,尺寸设置为传入的MeasureSpec的大小。

  有个观念需要纠正的是,fill_parent应该是子view会占据剩下容器的空间,而不会覆盖前面已布局好的其他view空间,当然后面布局子view就没有空间给分配了,所以fill_parent属性对布局顺序很重要。以前所想的是把所有容器的空间都占满了,难怪google在2.2版本里把fill_parent的名字改match_parent.

自定义view onMeasure方法的重写

  • ID19870510
  • ID19870510
  • 2016年02月21日 19:17
  • 1500

Android自定义View(三、深入解析控件测量onMeasure)

转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51468648 本文出自:【openXu的博客】 目录:onMeasure什么...
  • u010163442
  • u010163442
  • 2016年05月24日 14:59
  • 21124

android 自定义View之View的测量(onMeasure()方法)

在自定义控件的过程中,系统在绘制View前,必须对View进行测量,已使后面的onLayout(设置View的放置位置)能够顺利进行。而对VIew的测量的过程则是在onMeasure()中进行的。可能...
  • gongzhiyao3739124
  • gongzhiyao3739124
  • 2016年09月14日 19:12
  • 1731

自定义View的onMeasure、onLayout

原文 http://yifeiyuan.me/2015/10/12/%E8%87%AA%E5%AE%9A%E4%B9%89View%E7%9A%84onMeasure%E3%80%81onLayout...
  • yunnywu
  • yunnywu
  • 2016年01月07日 11:21
  • 926

Android 自定义View 中的OnMeasure的用法

作用:
  • a739697044
  • a739697044
  • 2014年06月12日 12:43
  • 10003

ANDROID自定义视图——onMeasure,MeasureSpec源码 流程 思路详解

自定义视图详解。MeasureSpec,onMeasure,measureChildren等方法源码分析。
  • a396901990
  • a396901990
  • 2014年07月17日 00:27
  • 18264

自定义view,viewgroup的onMeasure 方法

自定义view用了好久,用着用着吧感觉也就那么回事儿啊,如果想画个view,那就得知道view的大小。那么首当其中的就是onMeasure()方法啦。 先上一张图,这是我当年自学android的时候...
  • wanghao200906
  • wanghao200906
  • 2016年03月16日 17:19
  • 2214

自定义View之onMeasure(),onLayout(),onDraw()

自定义View之onMeasure() 分类: 实习android开发之路2014-01-25 11:13 395人阅读 评论(0) 收藏 举报 目录(?)[+] ...
  • zmissm
  • zmissm
  • 2014年07月15日 13:46
  • 6305

自定义view中onMeasure、onLayout、onDraw、onFinishInflate、onSizeChanged方法调用时机

一般自定义view或viewGroup基本上都会去实现onMeasure、onLayout、onDraw方法,还有另外两个方法是onFinishInflate和onSizeChanged。 on...
  • anhenzhufeng
  • anhenzhufeng
  • 2017年06月06日 18:36
  • 1299

Android的onMeasure和onLayout And MeasureSpec揭秘

Android中自定义ViewGroup最重要的就是onMeasure和onLayout方法,都需要重写这两个方法,ViewGroup绘制 的过程是这样的:onMeasure → onLayout →...
  • yulinyige
  • yulinyige
  • 2013年10月12日 21:44
  • 5829
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android对View的onMeasure方法理解
举报原因:
原因补充:

(最多只允许输入30个字)