首页 > 移动平台 > 详细

如何获取到Android控件的高度

时间:2015-09-02 12:05:45      阅读:341      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!