很多时候,想获取一个view的宽和高来进行一些后续处理,但是有些时候发现获取到的只是0。

大部分情况都是在onCreate里调用的getWidth方法,问题就是这里。因为这时候虽然创建了view,但是还没有在界面里渲染这个view,还没有为它分配空间,所以才是0。

怎么才可以获取到正确的值得,网上有很多方法,比如有人说另起一个线程,循环判断view的大小,当不为0的时候再获取。这些方法的其实都是一个目的,做延迟,等到界面全渲染好了再获取。

这里记录俩个方法以便以后使用:

1、onSizeChanged()

自定义一个view的话可以直接复写onSizeChanged()方法,当然也可以对view添加SizeChangedListener来监听大小的改变。这个方法很适合view的大小会动态变化的情况,比如横竖屏切换等。可以在大小改变的时候获取到新的宽和高,并进行一些处理。

2、OnGlobalLayoutListener

添加OnGlobalLayoutListener监听布局是否完成,具体代码如:view.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener(){ ... });,当完成后在对应的方法里可以获取到真实的大小。这个方法适合需要在view布局完成后做一个处理的情况。

上面俩个方法后可以正确的获取到view的宽和高,当然还有其他方法,根据自己的需要来使用

使用View的getWidth(),getHeight()方法返回0的问题相关推荐

  1. 视图的getWidth()和getHeight()返回0

    我正在动态创建我的android项目中的所有元素. 我正在尝试获取按钮的宽度和高度,以便可以旋转该按钮. 我只是想学习如何使用android语言. 但是,它返回0. 我做了一些研究,发现需要在onCr ...

  2. sendrequest ajax数据返回,jquery ajax 还没有调用send()方法 返回的状态码XMLHttpRequest.status 是0 ,怎么解决?...

    jquery ajax 还没有调用send()方法 返回的状态码XMLHttpRequest.status 是0 ,怎么解决?0 嗲女错cbn2013.04.29浏览451次分享举报 function ...

  3. 编写一个函数my_power,用循环的方法实现 返回一个float类型数的某个整数次幂(保留6位小数)。 如调用my_power(3.14,-2)返回0.101424

    编写一个函数my_power,用循环的方法实现返回一个float类型数的某个整数次幂(保留6位小数).如调用my_power(3.14,-2)返回0. #include <stdio.h> ...

  4. 【工作记录】java方法返回多个值(用法思考、比较)

    用java写业务逻辑的时候,有时候一个方法可能需要返回多个出参,当中可能有List,String,Map等不同类型的数据结构,针对这种情况,我的解决策略一般是使用Map的形式来解决,具体分析请浏览下文 ...

  5. 中如何直接使用方法返回的值_java基础-2-方法、面向对象

    一.方法 1.1.定义:方法可以认为我们写程序中所要实现的某一个功能,方法中会包含很多条语句.流程控制.循环等,这些内容组合起来去处理一件事情. 1.2.方法的声明: 方法的声明位置必须写在类中,并且 ...

  6. View 中的 getContext 一定返回的是 Activity 对象吗?

    答案是不一定. 如果这个 View 是我们构造出来的,那它的 getContext() 返回的是我们构造它的时候传入的 Context 类型. 如果是 XML 里面的 View 呢,会怎样? 先看结论 ...

  7. android bindservice方法,Android bindservice方法返回false

    我想从另一个类(BaseExpandableListAdapter)的活动中调用一个方法.活动中的方法启动服务并调用bindService(,,)方法.但是,bindService方法总是返回fals ...

  8. Java框架-SpringMVC的应用(json数据交互、控制器方法返回值、文件上传)

    1. 搭建SpringMVC开发环境 1.1 创建项目,添加依赖 <?xml version="1.0" encoding="UTF-8"?> &l ...

  9. Silverlight调用的JS方法返回对象数组的处理方法

    最近在做Silverlight应用,需要用Silverlight调用页面中Javascript方法.这个JS方法返回一个对象数组给Silverlight.对于这个对象数组怎么在Silverlight里 ...

最新文章

  1. python饼图怎么显示中文_python生成饼图解决中文乱码
  2. Log4j使用详解(log4j.XML格式)——整理
  3. 旗下首发双模5G+双挖孔全面屏!Redmi K30真机谍照曝光
  4. java8模块化_Java9系列第8篇-Module模块化编程
  5. linux arm 虚拟机,ARM平台上实现Linux内核虚拟机技术研究
  6. iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转
  7. 计算机excel表格公式教程,职称计算机Excel教程:显示公式的方法
  8. java小练习:乘法表的实现(不止是9)
  9. Matlab之在城市环境中基于动态占用网格图的的运动规划仿真(附源码)
  10. veins笔记——模块
  11. 云桌面计算机验收注意事项,云桌面使用前需要注意的四大步骤
  12. Word在试图打开文件时遇到错误,请尝试下列方法:检查文档或驱动器的文件权限 确保有足够的内存和磁盘空间 用文本恢器打开文件
  13. 解释SQL和NoSQL
  14. 响应式布局,弹性布局
  15. C语言学习那些容易被我们忽视的知识
  16. 新概念英语第二册课文电子版_新概念英语第二册音频+视频讲解:Lesson 24
  17. Android 第三方登录 QQ提示需要最新版问题的解决办法
  18. 紫光云生态面面观——后来居上的紫光云会打出怎样的生态牌?
  19. 有源和无源滤波器的区别_有源无源滤波器优缺点
  20. java.lang.SecurityException: ...does not have android.permission...

热门文章

  1. asp.net mvc源码分析-DefaultModelBinder 自定义的普通数据类型的绑定和验证
  2. grailsgroovy的IllegalArgument异常
  3. GC分析中提到的根对象是什么
  4. JQuery-让Ajax变的更简单
  5. c#3.0系列:Object Initializer 和 Collection Initializer
  6. 代码练习中的bug及修改方法
  7. python基础----python的使用(四)
  8. IntelliJ IDEA 建空包合并问题。
  9. gRPC源码分析2-Server的建立
  10. wordpress后台404页面