android 测量view宽高
时间: 2023-09-03 15:02:12 浏览: 54
Android中测量View的宽高通常使用onMeasure()方法来实现。首先要明确一点,View的宽高是由父容器来决定的。
在自定义View中,重写onMeasure()方法,并通过MeasureSpec类来测量宽高。在onMeasure()方法中,通过MeasureSpec.getSize()方法获取父容器对View的期望大小。
当测量模式为MeasureSpec.EXACTLY时,表示父容器对View有明确的期望大小,这时候可以直接使用MeasureSpec.getSize()方法获取宽高值。
当测量模式为MeasureSpec.AT_MOST时,表示父容器对View的大小有一个上限,View的大小不能超过这个上限。这时候需要通过自定义的逻辑来计算并设置View的宽高。
当测量模式为MeasureSpec.UNSPECIFIED时,表示父容器对View的大小没有限制,View的大小可以任意。在这种情况下,可以自由设置View的宽高值。
使用MeasureSpec.makeMeasureSpec()方法来创建一个MeasureSpec,在该方法中传入期望的大小和测量模式来得到一个MeasureSpec值。
在onMeasure()方法中,可以通过setMeasuredDimension()方法来设置View的宽高,此方法需要传入计算得到的宽高值。
总结来说,测量View的宽高需要重写onMeasure()方法,并通过MeasureSpec来得到宽高的期望大小和测量模式。在不同的测量模式下,可以采用不同的逻辑来计算和设置View的宽高。最后使用setMeasuredDimension()方法来设置View的宽高值。