将getX()和getY()视图添加到Activity后,返回0.0

时间:2015-09-04 14:11:10

标签: android android-layout

在ManActivity onCreate()中的

我实例化了一个新的View,并通过layout.addView将它添加到了活动中。如果我为该视图尝试getX()或getY(),我总是得到0.0。

"Int"

3 个答案:

答案 0 :(得分:28)

$这样的ViewGroup不会立即布置他们的孩子,因此您的View还不知道它在屏幕上的位置。您需要等待RelativeLayout完成布局传递才能发生。

您可以像这样监听全局布局事件:

RelativeLayout

答案 1 :(得分:11)

另一种选择是使用post(Runnable action)方法:

view.post(new Runnable() {
    @Override
    public void run() {
        System.out.println(view.getX());
        System.out.println(view.getY());
    }
});

这将导致在完成其他待处理任务(例如布局)后执行Runnable。

答案 2 :(得分:0)

将您对getX()和getY()的调用移至jsfiddle回调。 正如官方指南所说,这是了解用户是否可以看到活动的最佳方式。查看代码,您可以将您的方块放入成员变量中,以便能够将它与两个回调一起使用。

试试这个:

{{1}}

一般规则是你无法在onCreate()中从你的布局中检索位置信息,因为你只是在创建它,而android仍然需要详细说明它们。

你也可以给onResume()回调一个机会,但对我来说它没有用。