【问题标题】:When do coordinates of child views become valid?子视图的坐标什么时候生效?
【发布时间】:2016-04-17 09:41:38
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android android-relativelayout


    【解决方案1】:

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

    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
        }
    });
    

    【讨论】:

    • 像魅力一样工作!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多