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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年03月31日 21时08分07秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python3《机器学习实战》学习笔记(三):决策树实战篇之为自己配个隐形眼镜
2019-04-27
学生成绩信息管理c++
2019-04-27
Qt网络编程———TCP(1)
2019-04-27
java 构造方法中super()和this()
2019-04-27
华为HCIA-datacom 学习笔记汇总目录
2019-04-27
第4章 Python 数字图像处理(DIP) - 频率域滤波1 - 傅里叶级数和变换简史
2019-04-27
v-if和v-show的区别
2019-04-27
Linux下创建用户,分组,配置jdk, tomcat
2019-04-27
HikariCP、MySQL Configuration 性能优化
2019-04-27
系统配置自动装载机制 - 分布式开发
2019-04-27
SpringCloud实战 - Hystrix
2019-04-27
Kafka实战(七) - 优雅地部署 Kafka 集群
2019-04-27
Java支付系统(三) - SpringBoot 应用程序搭建
2019-04-27
详解Java业务领域分层模型中的vo/po/dto/pojo/bo
2019-04-27
Java持久层框架MyBatis全注解详解
2019-04-27
Java线程组ThreadGroup
2019-04-27
Java同步器之AbstractOwnableSynchronizer详解
2019-04-27