前言
在自定义View
的构造方法中使用getWidth()
和getHeight()
返回值为0,
因为过早的使用了这些方法,也就是说在这个view
被加入到rootview
之前你就调用了这些方法,返回的值自然为0。
解决方法:
自定义View实现OnGlobalLayoutListener接口,并重写onGlobalLayout方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); getViewTreeObserver().addOnGlobalLayoutListener(this); }
@Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); getViewTreeObserver().removeOnGlobalLayoutListener(this); }
@Override public void onGlobalLayout() { Log.i(TAG, "onGlobalLayout"); if(!mCreated){ mCreated = true } }
|