`getLeft()`在`onWindowFocusChanged()`中返回零

时间:2016-10-21 07:46:06

标签: android android-layout android-xml

我有一个单独的类Answer,它扩展了ImageView。此对象以编程方式添加到容器视图中,然后在onWindowFocusChanged()中调用位置初始化方法 - 此方法设置正确的边距和布局参数并打开可见性。然后我通过调用getLeft()来尝试获得Answer的初始X位置。无论是从Answers类this.getLeft()内调用还是从主活动answer_object1.getLeft()调用它,它仍然返回零。

为什么?

如果我通过XML添加图像视图并在onWindowFocusChanged()中调用'getLeft()',则返回正确的值。

1 个答案:

答案 0 :(得分:2)

getLeft()仅在布局步骤完成后才会返回实际值,并且会调用onLayout的{​​{1}}。因此,要记录视图的初始位置,最好在Answer中执行此操作。

现在谈到onLayout - 文档没有承诺是否会在onWindowFocusChanged()之前或之后调用此方法,因此它不是记录视图初始位置的最佳位置。