关于getMeasuredHeight和getHeight区别总结

getMeasuredHeight和getHeight区别

getMeasuredHeight:是用于测量的高度,也就是View实际的高度(先暂时这么记,后面还有一个显示出来的高度),getMeasuredHeight的值是在onMeasure方法里面通过setMeasuredDimension();设置出来的。也就是说要在onMeasure方法之后调用,不能再之前,这样会得到0。

getHeight:是指在屏幕上显示出来的高度(这里要强调一点就是不能再onCreate方法里面获得一个View的高度),这个方法得到的是View显示在桌面上的高度(跟前面测量的高度相对对应),因为View的onMeasure方法运行完之后还会运行一个onLayout方法,要等到onLayout运行完之后才能得到具体的值,这个方法是指View所在屏幕上的位置,通过View.layout(int Left,int Top,int Right,int Bottom)改变View在屏幕上的大小(这个方法只是改变形状上的大小,实际的View并没有改变)。

以上文章参考:https://blog.csdn.net/qq_29951983/article/details/50571840


------------------------------------------我是分割线--------------------------------------------------

onMeasure

首先来看一下Viewmeasure方法:

  public final void measure(int widthMeasureSpec, int heightMeasureSpec) {

       //...

       onMeasure(widthMeasureSpec, heightMeasureSpec);

       //...

  }

  注意到measure方法是final修饰的,也就是说这个方法是不允许重写的,而且方法内部主要是调用了onMeasure方法,测量工作交给onMeasure来做,所以我们在自定义View时总是重写其onMeasure方法。注意到传入的两个int类型的参数,widthMeasureSpecheightMeasureSpec,这两个参数代表什么呢:

  其高2位表示MODE,也就是测量的模式;低30位代表SIZE,测量的值。可以通过MeasureSpec.getMode()MeasureSpec.getSize()得到它们。

以上文章参考:https://blog.csdn.net/lovejavasman/article/details/52221889

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值