很多时候我们想获取控件的宽高,但如果调用getWidth()和getHeigth(),取到的结果是0。
这是因为我们执行方法时,View的绘制还未完成所以取到的宽高都是0。
这时我们可以用ViewTreeObserver来监听View的绘制完成,此时再取即可获取控件的宽高,代码如下:
ViewTreeObserver vto2 = mView.getViewTreeObserver();
vto2.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
Toast.makeText(getActivity(),"ViewWidth:"+mView.getWidth()+",ViewHeigth:"+mView.getHeight(),Toast.LENGTH_LONG).show();
}
});