android代码中获取view的宽高方式

来源:互联网 发布:lcd1602与单片机连接图 编辑:程序博客网 时间:2024/04/26 05:25

通过代码方式获取view的宽高方式记录


方式1:

img = (ImageView) findViewById(R.id.iv_img);        int w = View.MeasureSpec.makeMeasureSpec(0,                View.MeasureSpec.UNSPECIFIED);        int h = View.MeasureSpec.makeMeasureSpec(0,                View.MeasureSpec.UNSPECIFIED);        img.measure(w, h);        int height = img.getMeasuredHeight();        int width = img.getMeasuredWidth();
方式2:

ViewTreeObserver vto = imageView.getViewTreeObserver();     vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {         public boolean onPreDraw() {         vto.removeOnPreDrawListener(this);            int height = imageView.getMeasuredHeight();             int width = imageView.getMeasuredWidth();             return true;         }     }); 
注册一个ViewTreeObserver的监听回调,该回调专门监听绘图的,所以可以获取测量值了,同时,我们在每次监听前remove前一次的监听,避免重复监听。

方式3:

ViewTreeObserver vto = imageView.getViewTreeObserver();   vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {     @Override       public void onGlobalLayout() {         imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);         imageView.getHeight();        imageView.getWidth();    }   });
全局的布局改变监听器,优先最推荐使用


0 0
原创粉丝点击