android获取控件宽高为0的原因

很多时候我们想获取控件的宽高,但如果调用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();
            }
        });


你可能感兴趣的:(安卓常用,android开发,android,view)