对于android中的View类,是否有一个等效于Dialog.setOnShowListener()的方法?
我需要它,因为当我在someViewGroup.addView(foo)之后的行中的一个View(比如foo)上调用getLocationOnScreen时,我得到location =(0,0)。
我不能使用活动的任何生命周期方法,因为添加foo正在运行(按下按钮)。任何帮助将受到高度赞赏。提前致谢。
答案 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);
}
});