我实例化了一个新的View,并通过layout.addView将它添加到了活动中。如果我为该视图尝试getX()或getY(),我总是得到0.0。
"Int"
答案 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()回调一个机会,但对我来说它没有用。