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

Android 获取View宽高三种方法的使用场景

2016-12-07 18:11 429 查看

Android 获取View宽高三种方法的使用场景

第一种measure();

int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
mView.measure(w, h);
int Width = mView.getMeasuredWidth();
int Height = mView.getMeasuredHeight();


measure这种方法适用直接测量一个View,如ImageView TextView等。

2.第二种view.post()

view.post(new Runnable() {
@Override
public void run() {
int height = view.getHeight();
}
});


3.第三种对View 的监听,布局完成后回调.

view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
view.postDelayed(new Runnable() {
@Override
public void run() {
int height = view.getHeight();
}
}, 300);
}
});


说明:由于第二种和第三种使用场景一样,所以就放在一起说了。

第二种和第三种适用于拿到addView之后容器的宽高,如用了一个LinearLayout代码add了View之后想拿到

LinearLayout容器的宽度就要使用第二种或第三种,用第一种方法拿到的是错误的宽高。

以上说明都是本人在实际项目中踩的坑,以此记录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息