ImageView.getX()在onWindowFocusChanged中返回0

时间:2018-07-11 15:17:39

标签: java android

我希望我在这里遗漏了一些荒谬的东西。我有一个活动,其中有一个ImageView和一个相对布局中的textView。显然,imageView将根据屏幕的大小而改变其在屏幕上的位置,因此,我试图获取imageView起始位置的Xposition。 getX()似乎是我要寻找的东西。但是,当我调用它时,返回的值始终为0.0。

最初,我在OnCreate方法中使用了它,然后研究发现在OnCreate方法中视图还没有完成创建,并且可能不存在。因此,我发现的解决方法之一是使用onWindowFocusChanged(布尔hasFocus)并在那里调用我的尺寸。但是,这也不起作用。当我调试代码并进入代码行时,getX()行正在执行并返回0.0。 在onWindowFocusChanged方法中的代码运行时,是否应该已经创建视图?

这是我的代码:

@Override
public void onWindowFocusChanged (Boolean hasFocus) {
     super.onWindowFocusChanged(hasFocus);

     if (hasFocus) {
         ImageView myImage = findViewById(R.id.image1);
         TextView tv1 = findViewById(R.id.textView1);

         RelativeLayout.LayoutParams layoutparams;
         layoutparams = (RelativeLayout.LayoutParams) myImage.getLayoutParams();
         myImage.setLayoutParams(layoutparams);
         float image_start_pos = myImage.getX(); // <- this line returns 0.0

         ...
     }
}

我也尝试使用ViewTreeObserver作为详细的here,但是也返回0.0。我在做什么错,还是有另一种更好的方法可以使用,只有在活动完全呈现后才执行?

1 个答案:

答案 0 :(得分:0)

这当然对我来说很愚蠢。我把x和y混在一起了。 X为0,因为图像视图的左边缘在屏幕的边缘。 GetY()给了我我想要的号码。