转自:http://blog.csdn.net/yangdeli888/article/details/25405263

在oncreate()中利用view.getWidth()或是view.getHeiht()来获取view的宽和高,看似没有问题,其实他们去得值是0,并不是你想要的结果?

这是为什么呢?

在调用oncreate()方法时,界面处于不可见状态,内存加载组件还没有绘制出来,你是无法获取他的尺寸。

那如何在绘制组件之前能获取到该组件的尺寸大小呢?

这里有三种方法,经过验证的:

方法一 :
//测量方法

1
2
3
4
5
int

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

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

height=view.getMeasuredHeight();
int

width=view.getMeasuredWidth();

方法二 :

1
2
3
4
5
6
7
8
9
//增加组件绘制之前的监听
ViewTreeObserver
vto =view.getViewTreeObserver();
vto.addOnPreDrawListener(new

ViewTreeObserver.OnPreDrawListener() {
   @Override
    public

booleanonPreDraw() {
       int

height =view.getMeasuredHeight();
       int

width =view.getMeasuredWidth();    
   }
});

方法三 :

1
2
3
4
5
6
7
8
9
10
//增加整体布局监听
ViewTreeObserver
vto = view.getViewTreeObserver(); 
vto.addOnGlobalLayoutListener(new

OnGlobalLayoutListener(){
    @Override 
    public

voidonGlobalLayout() {
      view.getViewTreeObserver().removeGlobalOnLayoutListener(this);     
        int

height =view.getMeasuredHeight();
        int

width =view.getMeasuredWidth(); 
    
});

那么,在activity进入运行期时,组件的尺寸获取方法就很简单了,直接getWidth()和getHeight().

最新文章

  1. java开发环境
  2. freeCodeCamp:Slasher Flick
  3. HTML基础—插曲
  4. 【笔记】jquery阻止冒泡事件发生的语句
  5. 2013 Asia Regional Changchun I 题,HDU(4821),Hash
  6. Linux基础01 学会使用命令帮助
  7. OD调试篇5--如何应对OD使用中的一些问题
  8. Node.js express路由简单分析
  9. APIO2014 爆零总结
  10. ZOJ 3705 Applications
  11. Welcome Back to C++ (Modern C++)
  12. AJAX 中Sys.WebForms.PageRequestManager的事件激发顺序 《转》
  13. vim的用法
  14. Histats安装Counter网站计数器 - Blog透视镜
  15. Oracle免费的便捷Web应用开发框架
  16. JavaSE教程-02Java基本语法-BUG:易错点
  17. 用css3的cursor:zoom-in/zoom-out实现微博看图片放大镜效果
  18. Java 中的纤程库 – Quasar
  19. Angular开发技巧
  20. python 全栈开发,Day95(RESTful API介绍,基于Django实现RESTful API,DRF 序列化)

热门文章

  1. (My)SQL
  2. Mysql锁的类型与简析
  3. LoadRunner的Capture Level说明
  4. es6的Map()构造函数
  5. Laravel 之父:让 Laravel、Symfony、 Zend 来一场公平的性能测试
  6. HDU 6185 Covering
  7. 洛谷P2231 [HNOI2002]跳蚤 [数论,容斥原理]
  8. NOIP2011 D1 T2选择客栈
  9. springMVC项目,存中文到mysql是乱码(?????)
  10. 洛谷P1149 火柴棒等式