Android - 显示View时需要回调

Sye*_*tan 9 android view

android中的View类是否有一个等效于Dialog.setOnShowListener()的方法?

我需要它,因为当我在someViewGroup.addView(foo)之后的行中的一个View(比如foo)上调用getLocationOnScreen时,我得到location =(0,0).

我不能使用活动的任何生命周期方法,因为添加foo正在运行(按下按钮).任何帮助将受到高度赞赏.提前致谢.

Zel*_*ion 19

您应该使用ViewTreeObserver:

someViewGroup.addView(foo)    

ViewTreeObserver vto = someViewGroup.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {

            ///getLocationOnScreen here

            ViewTreeObserver obs = someViewGroup.getViewTreeObserver();
            obs.removeGlobalOnLayoutListener(this);
        }
    });
Run Code Online (Sandbox Code Playgroud)