Android中getMeasuredHeight和getHeight的区别

作者:陆金龙    发表时间:2017-10-22 11:02   


getMeasuredHeight

getMeasuredHeight:是用于测量的高度,也就是View实际的高度,它的值是在onMeasure方法里面通过setMeasuredDimension();设置出来的。getMeasuredHeight要在onMeasure方法之后调用,否则会得到0。

如果高度设置为match_parent 则为手机屏幕的高度,如果设置为200dp,那么通过View.getResources().getDisplayMetrics().density*200获取高度像素值。

getHeight

getHeight:是指在屏幕上显示出来的高度,View的onMeasure方法运行完之后还会运行一个onLayout方法,要等到onLayout运行完之后才能得到具体的值。onLayout方法是ViewGroup中子View的布局方法,用于放置子View的位置。

放置子View只需重写onLayout方法,然后获取子View的实例,调用子View的layout方法实现布局,通过View.layout(int Left,int Top,int Right,int Bottom)可改变View在屏幕上的大小。

onLayout传下来的l,t,r,b分别是父控件的矩形可用空间(除去margin和padding的空间)的左上角的left、top以及右下角right、bottom值。View.layout(int Left,int Top,int Right,int Bottom)中参数的值也是相对于父控件左上角的相对坐标值。