Android 安卓可以';无法获取视图位置坐标

Android 安卓可以';无法获取视图位置坐标,android,position,Android,Position,我尝试使用getTop()和getLeft()方法获取textView的位置,但它们总是返回0。我从onCreate()调用此方法 此时文本视图还不可见。您需要在活动生命周期的稍后时间调用这些(请参阅下面的文档) 引用: 一旦onCreate()完成执行,系统将调用onStart() 和onResume()方法快速连续。你的活动永远不会停止 位于已创建或已启动状态。从技术上讲,这项活动 调用onStart()时,对用户可见,但调用onResume()时 随后会快速执行,活动将保持在恢复状态,直到

我尝试使用
getTop()
getLeft()
方法获取
textView
的位置,但它们总是返回0。我从onCreate()调用此方法


此时文本视图还不可见。您需要在活动生命周期的稍后时间调用这些(请参阅下面的文档)

引用

一旦onCreate()完成执行,系统将调用onStart() 和onResume()方法快速连续。你的活动永远不会停止 位于已创建或已启动状态。从技术上讲,这项活动 调用onStart()时,对用户可见,但调用onResume()时 随后会快速执行,活动将保持在恢复状态,直到 事情发生了变化


此时文本视图还不可见。您需要在活动生命周期的稍后时间调用这些(请参阅下面的文档)

引用

一旦onCreate()完成执行,系统将调用onStart() 和onResume()方法快速连续。你的活动永远不会停止 位于已创建或已启动状态。从技术上讲,这项活动 调用onStart()时,对用户可见,但调用onResume()时 随后会快速执行,活动将保持在恢复状态,直到 事情发生了变化


我找到了答案。只需使用
getViewTreeObserver().addOnGlobalLayoutListener
并在此方法中调用getLeft、getTop等。

我找到了答案。只需使用
getViewTreeObserver().addOnGlobalLayoutListener
并在该方法中调用getLeft、getTop等。

一旦布局过程完成,将触发布局侦听器。它与特定的活动生命周期无关,因此您必须向布局过程添加一个观察者

    view.getViewTreeObserver().addOnGlobalLayoutListener(
            new ViewTreeObserver.OnGlobalLayoutListener()
            {
                @Override
                public void onGlobalLayout()
                {
                    // Now you may get the left/top/etc. 
                    getCoordsFromView(view);
                    // Optionally remove the listener so future layouts don't change the value
                    view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                }
            });

布局过程完成后,将触发布局侦听器。它与特定的活动生命周期无关,因此您必须向布局过程添加一个观察者

    view.getViewTreeObserver().addOnGlobalLayoutListener(
            new ViewTreeObserver.OnGlobalLayoutListener()
            {
                @Override
                public void onGlobalLayout()
                {
                    // Now you may get the left/top/etc. 
                    getCoordsFromView(view);
                    // Optionally remove the listener so future layouts don't change the value
                    view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                }
            });

获取0的原因是因为在实际测量视图以进行显示之前调用了onCreate。获取0的原因是在实际测量视图以进行显示之前调用了onCreate。