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

来源:互联网 发布:淘宝津贴200是什么意思 编辑:程序博客网 时间:2024/05/21 09:33

在一套逻辑中,程序给系统下达绘制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
原创粉丝点击