我发现在使控件调用setLayoutParams()之后,立即通过getWidth()或getHeight()不能拿到其更新后的值。我异步打印后发现,要等一段时间后这两个获取宽高的函数才能返回更新后的值。那么问题就来了,什么时候getWidth()才能返回更新后的值呢?这个时候有没有什么监听或是回调?
setLayoutParams()
getWidth()
getHeight()
业精于勤,荒于嬉;行成于思,毁于随。
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { view.getViewTreeObserver().removeGlobalOnLayoutListener(this); // getWidth or getHeight; } });
业精于勤,荒于嬉;行成于思,毁于随。