为什么屏幕上的位置总是 return 0?

Why does location on screen always return 0?

我想知道图像视图的位置,但它总是 return 0 既不是 x 坐标也不是 y 坐标。这是我的代码

    ImageView credits = (ImageView) v.findViewById(R.id.credits);
    int[] coor = {0,0};
    credits.getLocationOnScreen(coor);
    x = coor[0];
    y = coor[1];

我已经使用了很多方法,例如getTop(),但仍然是return 0.

有人知道为什么吗?我是 android 的新手,所以非常感谢任何答案。

您是否在 onCreate() 方法中使用此代码?

经过快速搜索,我找到了 THIS POST

简而言之,它说 onCreate() 使用 getLocationOnScreen 还为时过早,您应该在 Activity 获得焦点时在方法 onWindowFocusChanged() 旁边使用它。

您是在 onCreate 方法中这样做吗?

如果是,现在检查 onCreate() 中的 getLocationOnScreen() 还为时过早

这里的解决方案:

  credits.post(new Runnable() {
        @Override
        public void run() {
           int[] coor = {0,0};
           credits.getLocationOnScreen(coor);
           x = coor[0];
           y = coor[1]; 
        }
    })

这样试试

请试试这个

  @Override
    protected void onResume() {
        super.onResume();
        ImageView credits = (ImageView) v.findViewById(R.id.credits);
        int[] coor = {0,0};
        credits.getLocationOnScreen(coor);
        x = coor[0];
        y = coor[1];
    }