项目开发中总会遇到一种情况,就是在ocreate方法或者在View未绘制之前要获取View的宽和高用于计算,这时候使用view的getwidth方法或者getMeasuredWidth,基本得到0。此时就需要用到下面的方法来获取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 =view.getMeasuredWidth();
方法二:
ViewTreeObserver vto = popMenu.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
int height = popMenu.getMeasuredHeight();
int width = popMenu.getMeasuredWidth();
return true;
}
});