Неверные координаты из getLocationOnScreen / getLocationInWindow - PullRequest
57 голосов
/ 14 апреля 2010

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

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

Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

80 голосов
/ 04 мая 2010

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

7 голосов
/ 31 августа 2012

Вот как я хочу получить высоту строки состояния и настроить смещение:

final int[] location = new int[2];
anchor.getLocationInWindow(location); // Includes offset from status bar, *dumb*
Rect anchorRect = new Rect(location[0], location[1],
        location[0] + anchor.getWidth(), location[1] + anchor.getHeight());

anchor.getRootView().findViewById(android.R.id.content).getLocationInWindow(location);
int windowTopOffset = location[1];
anchorRect.offset(0, -windowTopOffset);
5 голосов
/ 02 мая 2010

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

offset = myView.GetOffsetY();

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

coordY -= offset;

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

class MyView extends View {

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

}
4 голосов
/ 23 ноября 2013

Этот ответ не включает, как получить высоту строки состояния, но объясняет поведение getLocationOnScreen() и getLocationInWindow(), возвращающих одно и то же значение.

В случае обычной активности (не диалога) вы должны ожидать, что эти два метода вернут одно и то же значение. Окно располагается под (как в z-порядке, а не координатами y) строкой состояния, поэтому эти методы нельзя использовать для определения высоты строки состояния.

https://stackoverflow.com/a/20154562/777165

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...