何时需要使用getMeasuredHeight()\getMeasuredWidth()?

在一套逻辑中,程序给系统下达绘制View的请求之后,如果我们想在此时获得View的宽高,就必须用getMeasuredHeight()。因为此时View还没有绘制完成,不可以使用getHeight()。


这里补充一点知识,View.INVISBLE和View.GONE的区别:View.INVISBLE实际上VIew已经绘制完成,只是看不见,我们仍然可以用getWidth()\getHeight()取得View的宽高。View.GONE时,VIew的状态是未绘制,此时getWidth()\getHeight()返回是0。


举个实际的例子:

现在某个控件et的状态是View.GONE,我们要在某个函数里设置et.setVisibility(View.VISIBLE)之后要获得et的高,那么此时就要用到getMeasuredHeight()。

<span style="white-space:pre">	</span>void function() {
		et.setVisibility(View.VISIBLE);
		int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); 
		int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
		tv3.measure(w, h);
		Log.v("test", "" + et.getMeasuredHeight());
	}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值