Неправильные Координаты От getLocationOnScreen/getLocationInWindow

Вызов к getLocationOnScreen() или getLocationInWindow() оба дают мне a top/Y координата, которая является о ~30px (высота панели состояния/уведомлений) слишком далеко вниз. left/X координата мертва на.

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

Любая справка значительно ценилась бы.

57
задан nimph 14 April 2010 в 19:00
поделиться

2 ответа

Я решил эту проблему, определив высоту строки состояния / уведомлений следующим образом:

View globalView = ...; // the main view of my activity/application

DisplayMetrics dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);
int topOffset = dm.heightPixels - globalView.getMeasuredHeight();

View tempView = ...; // the view you'd like to locate
int[] loc = new int[2]; 
tempView.getLocationOnScreen(loc);

final int y = loc[1] - topOffset;
81
ответ дан 24 November 2019 в 19:36
поделиться

У меня та же проблема, попробуйте использовать

offset = myView.GetOffsetY();

и отрегулируйте координату Y на это значение, например

coordY -= offset;

Класс, который предлагает `` -метод:

class MyView extends View {

  public int GetOffsetY() {
    int mOffset[] = new int[2];
    getLocationOnScreen( mOffset );
    return mOffset[1]; 
  }

}
5
ответ дан 24 November 2019 в 19:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: