码迷,mamicode.com
首页 > 移动开发 > 详细

如何获取到Android控件的高度

时间:2015-09-02 12:08:10      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

        很多人在activity主线程中调用getWidth、getMeasuredWidth,却获取不到view的宽高,这是因为此时view还没有完成绘制,当然获取不到,那要怎么办呢?

        方法一,自己测量:

int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
view.measure(w, h);
int height = view.getMeasuredHeight();
int width = vew.getMeasuredWidth();

        方法二,添加绘图监听,绘图结束后获取view的大小:

view.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { 
            public boolean onPreDraw() { 
                view.getViewTreeObserver().removeOnPreDrawListener(this);
                int height = view.getMeasuredHeight(); 
                int width = view.getMeasuredWidth(); 
                return true; 
            } 
        });

    方法三,添加全局布局变化监听:

view.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
            @Override  
            public void onGlobalLayout() { 
                view.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
                view.getHeight();
                view.getWidth();
            }   
        });

 

 

 

如何获取到Android控件的高度

标签:

原文地址:http://my.oschina.net/u/2415508/blog/500423

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!