Вызов к getLocationOnScreen()
или getLocationInWindow()
оба дают мне a top/Y
координата, которая является о ~30px (высота панели состояния/уведомлений) слишком далеко вниз. left/X
координата мертва на.
Когда я подсказал выше, я полагаю, что различие из-за панели состояния/уведомления... Я мог быть неправым. Я думаю, что могу решить это, если я могу определить размер панели уведомления, но, я испытываю затруднения при выполнении просто этого.
Любая справка значительно ценилась бы.
Я решил эту проблему, определив высоту строки состояния / уведомлений следующим образом:
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;
У меня та же проблема, попробуйте использовать
offset = myView.GetOffsetY();
и отрегулируйте координату Y на это значение, например
coordY -= offset;
Класс, который предлагает `` -метод:
class MyView extends View {
public int GetOffsetY() {
int mOffset[] = new int[2];
getLocationOnScreen( mOffset );
return mOffset[1];
}
}