2017-01-05 15 views
0

Я хочу знать положение изображения, но он всегда возвращает 0 ни координату x, либо координату y. Вот мой кодПочему на экране всегда возвращается 0?

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

Я уже использую много методов, таких, как getTop() и т.д., но все же его возвращение 0.

Кто-нибудь знает почему? Я новичок в андроиде, поэтому я очень благодарен за любые ответы.

ответ

0

Вы делаете это в методе onCreate?

Если да, то это слишком рано, чтобы проверить getLocationOnScreen() в OnCreate()

Solution здесь: https://stackoverflow.com/a/13244091/5392383

+0

Да, я понял. Я поставил его в onCreate() раньше. большое спасибо! –

0

Вы используете этот код внутри метода onCreate()?

После быстрого поиска я нашел THIS POST.

Короче, Сайд onCreate() слишком рано, чтобы использовать getLocationOnScreen, вы должны использовать его в стороне метод onWindowFocusChanged() когда ваши Activity получает фокус.

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

попробовать как этого

0

Pls попробовать это

@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]; 
    }