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。