Android 测量流程详解

本文详细探讨了Android中View的测量流程,重点讲解MeasureSpec的三种模式:EXACTLY、AT_MOST和UNSPECIFIED。内容包括MeasureSpec如何影响View的大小,如何在不同模式下处理MATCH_PARENT和WRAP_CONTENT,以及在自定义View时的测量策略。通过实例分析了ViewGroup如何测量子View,并总结了测量规则,揭示了View大小由父View和自身属性共同决定的原理。
摘要由CSDN通过智能技术生成

  

Android  View measure的最终结果是把layout_width和layout_height所设置的相对值转换为具体值的过程。MeasureSpec的种类分为MeasureSpec.EXACTLY(确定的)、MeasureSpec.AT_MOST(最多)、MeasureSpec.UNSPECIFIED(没有限制)。对于一个View来说它的宽和高各有属于自己的specMode,至于其具体作用后面会有说说明,先来说说这三个变量的作用:

1、MeasureSpec.EXACTLY:”确定的“,意思是parentView希望childView的大小是确定的,为specSize.

2、MeasureSpec.AT_MOST:“最多”,意思是childView的大小最多是specSize指定的值。

3、MeasureSpec.UNSPECIFIED:“没有限制”,此时View的设计者可以根据自身的特性设置视图的大小。

measureSpec的参数是由parentView传递给childView的,目的是告诉childView 可以提供的实际尺寸。MeasureSpec提供了三个方法

    1)makeMeasureSpec(int size,int mode):size参数由程序员自己设定,mode必须是specMode的三个值中的一个

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭梧悠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值