您的位置:首页 > 移动开发 > Android开发

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

2016-12-15 23:33 267 查看
通过代码方式获取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();
}
});全局的布局改变监听器,优先最推荐使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: