Android 子视图的坐标何时生效?

Android 子视图的坐标何时生效?,android,android-relativelayout,Android,Android Relativelayout,我有一个带有很多子视图的RelativeLayout,我想在活动启动后计算其中一个视图相对于父容器的位置 我的问题是,当我用视图填充布局时,我无法获得任何坐标,这发生在我的活动的onStart方法中。特别是,我尝试了a中提到的每一个食谱,但没有成功;所有这些方法都只返回零 不过,如果我稍后重复计算,我会。E在按钮处理程序中,它们会计算正确的位置 所以我的假设是onStart不是一个计算位置的好地方,因为有些东西还没有准备好。但是哪个地方更好呢?根据,onStart是向用户显示活动之前的最后一个调

我有一个带有很多子视图的RelativeLayout,我想在活动启动后计算其中一个视图相对于父容器的位置

我的问题是,当我用视图填充布局时,我无法获得任何坐标,这发生在我的活动的onStart方法中。特别是,我尝试了a中提到的每一个食谱,但没有成功;所有这些方法都只返回零

不过,如果我稍后重复计算,我会。E在按钮处理程序中,它们会计算正确的位置


所以我的假设是onStart不是一个计算位置的好地方,因为有些东西还没有准备好。但是哪个地方更好呢?根据,onStart是向用户显示活动之前的最后一个调用。我尝试将我的数学移到onResume中,但没有任何帮助。

您可以通过以下方式确保视图具有有效坐标:

parentView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        // really important! elsewhere this method will be called continously
        parentView.getViewTreeObserver().removeOnGlobalLayoutListener(this);

        // do your job
    }
});

工作起来很有魅力!谢谢!