解决在onCreate()过程中获取View的width和Height为0的4种方法
此博客为转载,原文请看这位老铁的文章: https://www.cnblogs.com/kissazi2/p/4133927.html
很经常当我们动态创建某些View时,需要通过获取他们的width和height来确定别的view的布局,但是在onCreate()获取view的width和height会得到0.view.getWidth()和view.getHeight()为0的根本原因是控件还没有完成绘制,你必须等待系统将绘制完View时,才能获得。这种情况当你需要使用动态布局(使用wrap_content或match_parent)就会出现。一般来讲在Activity.onCreate(...)、onResume()方法中都没有办法获取到View的实际宽高。所以,我们必须用一种变通的方法,等到View绘制完成后去获取width和Height。下面有一些可行的解决方案。
1、监听Draw/Layout事件:ViewTreeObserver
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {mScrollView.post(new Runnable() {public void run() {view.getHeight(); //height is ready //do something}});}});
2、将一个runnable添加到Layout队列中:View.post()
final View view=//smth; ... view.post(new Runnable() {@Overridepublic void run() {view.getHeight(); //height is ready }});
3、重写View的onLayout方法
view = new View(this) {@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {super.onLayout(changed, l, t, r, b);view.getHeight(); //height is ready } };
4, 附加:获取固定宽高
如果你要获取的view的width和height是固定的,那么你可以直接使用:1 View.getMeasureWidth() 2 View.getMeasureHeight()
转载于:https://www.cnblogs.com/Oldz/p/9341452.html
解决在onCreate()过程中获取View的width和Height为0的4种方法相关推荐
- 如何解决在onCreate()中获取View的width和Height为0?
当我们动态创建某些View时,需要通过获取他们的width和height来确定别的view的布局,但是在onCreate()获取view的width和height会得到0. view.getWidth ...
- android中oncreate方法,Android解决在onCreate()中获取View的width、Height为0的方法
前言 在activity中,经常需要获取view的width和height,但是在onCreate()获取view的width和height会得到0.view.getWidth()和view.getH ...
- java中的onresume_android onCreate onResume中获取 View 宽高为0分析
1.问题测试 xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_par ...
- spring mvc DispatcherServlet详解之三---request通过ModelAndView中获取View实例的过程
整个spring mvc的架构如下图所示: 上篇文件讲解了DispatcherServlet第二步:通过request从Controller获取ModelAndView.现在来讲解第三步:reques ...
- Tensorflow学习笔记6:解决tensorflow训练过程中GPU未调用问题
Tensorflow学习笔记6:解决tensorflow训练过程中GPU未调用问题 参考文章: (1)Tensorflow学习笔记6:解决tensorflow训练过程中GPU未调用问题 (2)http ...
- 解决Linux安装过程中不能安装Grub的问题
参考,部分转载和万分感谢:解决Linux安装过程中不能安装Grub的问题 关卡1: 从前段时间折腾了很久,刚开始是因为/boot区已经占满了,那么为什么会占满呢?因为当时尝试初次手动分区,然后参考了网 ...
- 解决从json文件中获取不到数据的问题
解决从json文件中获取不到数据的问题 参考文章: (1)解决从json文件中获取不到数据的问题 (2)https://www.cnblogs.com/yhyanjin/p/7214776.html ...
- u盘装linux镜像是dvd吗,使用U盘刻录镜像及解决在安装过程中找不到光盘的问题...
一.使用U盘刻录镜像 1.安装之后我们打开软件,点击文件打开,找到我们刚才进行下载的Ubuntu的ISO文件,然后点击打开,完成ISO文件的加载.接着我们插入U盘,点击UltraISO启动选项,然后找 ...
- cad2020安装1603错误_解决CAD安装过程中出现1603致命错误的方法
原标题:解决CAD安装过程中出现1603致命错误的方法 安装AutoCAD的时候,出现致命错误,提示1603错误,如下图所示,应该如何解决 出现这个问题,可尝试一下方法解决 1.删除安装程序,找到一下 ...
最新文章
- 剑指offer_第19题_顺时针打印矩阵_Python
- 10种Git技巧,让你省时省力又省心!
- Linkedin 工程师如何优化他们的 Java 代码
- 视频大变革:需要技术,也需要情怀
- 复制构造函数 与 赋值函数 的区别
- 学着造轮子-RxLifeCycle
- Tomcat企业级应用
- 3409: [Usaco2009 Oct]Barn Echoes 牛棚回声
- 重载练习1_四种不同参数类型的方法
- 最长上升子序列 (LIS算法(nlong(n)))
- android微信发现代码,微信代码各种隐藏盘点 99%用户都不知道的微信代码
- Ubuntu17.10下安装TIM
- Adam优化算法详细解析
- 51单片机霍尔测速与PWM调直流电机转速快慢
- scrapy指定item输出项顺序到csv
- MATLAB代码保存为word,MATLAB怎么保存为Word?
- 淘晶驰芯片AIHMI简介
- Win10家庭版升级至专业版
- 谷歌将 Istio 商标移交 OUC,IBM 表示失望
- 分析如何编写一个timer程序(以blt_soft_timer为例)
热门文章
- 2022-2028年中国玫瑰花行业市场研究及前瞻分析报告
- Docker 入门系列(2)- Docker 镜像, 免 sudo 使用 docker 命令、获取查看、修改镜像标签、查找删除创建镜像、导入导出镜像
- Linux系统管理必备知识之查看系统用户和用户组
- web服务器tornada,flask问题
- 如何通过HTTP优雅调用第三方-Feign
- 长篇自动驾驶技术综述论文(上)
- Python脚本语言写法
- python random 随机生成一个数
- java自增运算符与自减运算符
- No cached version of com.android.tools.build:gradle:2.0.0 available for offline mode.