search

Home  >  Q&A  >  body text

Android View.setLayoutParams完成之后有没有回调或是其他什么方法是getWidth能拿到更新后的值

我发现在使控件调用setLayoutParams()之后,立即通过getWidth()getHeight()不能拿到其更新后的值。我异步打印后发现,要等一段时间后这两个获取宽高的函数才能返回更新后的值。
那么问题就来了,什么时候getWidth()才能返回更新后的值呢?这个时候有没有什么监听或是回调?

迷茫迷茫2773 days ago680

reply all(1)I'll reply

  • 巴扎黑

    巴扎黑2017-04-17 16:38:05

    view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
    
            // getWidth or getHeight;
        }
    });

    reply
    0
  • Cancelreply