Android - 显示View时需要回调

时间:2012-06-08 11:36:51

标签: android view

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

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

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

1 个答案:

答案 0 :(得分:17)

您应该使用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);
        }
    });