美文网首页
理解view的Measure

理解view的Measure

作者: devYOUK | 来源:发表于2016-01-15 19:18 被阅读60次

    MeasuerSpec 是一个32位的int值,由2种数据组合而成 ——

    1. 高2位代表 SpecMode
    2. 低30位代表 SpecSize

    SpecMode 只有3个值,代表这个规格的模式
    0 —— UNSPECIFIED 未指定
    1 —— EXACTLY 精确值
    2 —— AT_MOST 最大值

    SpecSize 指的是这个规格的大小,单位是像素

    一个View需要2个维度的MeasureSpec值,分别是 widthMeasureSpec、heightMeasureSpec,
    分别代表着宽度的规格,高度的规格。
    这2个维度的MeasureSpec都有一个相同的初始值——Integer.MIN_VALUE —— 0x80000000
    具体是什么意思呢?
    初始的 MeasureSpace 是 AT_MOST 且长度为 0,但这个初始值没什么卵用,在具体测量的时候就会被覆盖。

    onMeasure()方法的2个spec是父容器提供的。表示父容器已经给你计算好一个预估值,用不用就看你了。

    如果是直接继承view的话,需要自己重写onMeasure方法,并处理layoutParams.wrap_content的情况。否则就会默认以父容器的大小作为自己的尺寸。

    view在测量自己的时候,不需要考虑自己的padding跟margin,父容器会搞定。

    相关文章

      网友评论

          本文标题:理解view的Measure

          本文链接:https://www.haomeiwen.com/subject/ciphkttx.html