Android View未显示时获取其高度
发布日期:2021-07-30 03:26:06 浏览次数:7 分类:技术文章

本文共 1153 字,大约阅读时间需要 3 分钟。

很多时候,我们这样来获取一个View的高度

int height = view.getHeight()

这个view处于显示状态的时候,并没有什么问题。

然而,当View处于View.VISIBLE或者View.GONE又或者你new了一个PopupWindow,但是还没show的时候,这时候你去取view的高度,你就会发现,总是取到的是0。那么怎么办呢?
叫view计算一下高度就OK了。

public int[] unDisplayViewSize(View view) {        int size[] = new int[2];        int width = View.MeasureSpec.makeMeasureSpec(0,                View.MeasureSpec.UNSPECIFIED);        int height = View.MeasureSpec.makeMeasureSpec(0,                View.MeasureSpec.UNSPECIFIED);        view.measure(width, height);        size[0] = view.getMeasuredWidth();        size[1] = view.getMeasuredHeight();        return size;    }

顺便对MeasureSpc这个类说明一下:

Android SDK的介绍是:MeasureSpc类封装了父View传递给子View的布局(layout)要求。每个MeasureSpc实例代表宽度或者高度

它有三种模式:

①、UNSPECIFIED(未指定),父元素部队自元素施加任何束缚,子元素可以得到任意想要的大小;
②、EXACTLY(完全),父元素决定自元素的确切大小,子元素将被限定在给定的边界里而忽略它本身大小;
③、AT_MOST(至多),子元素至多达到指定大小的值。
所以,下面两句代码的意思就是:子元素有多大,就绘制多大。

int width = View.MeasureSpec.makeMeasureSpec(0,                View.MeasureSpec.UNSPECIFIED);int height = View.MeasureSpec.makeMeasureSpec(0,                View.MeasureSpec.UNSPECIFIED);

然后 view.measure(width, height)。这句代码就是通知view从新计算宽度和高度。之后我们就能取得未显示view的宽高了。

转载地址:https://blog.csdn.net/u010886975/article/details/53007490 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android ListView item显示时高度变化
下一篇:Android stroke 边框线 某一边

发表评论

最新留言

很好
[***.229.124.182]2024年03月31日 21时08分07秒