как получить GWT PopupPanel по центру порта просмотра текущего пользователя на мобильном сафари? - PullRequest
3 голосов
/ 13 июля 2011

вызов .center () делает центр панели по всей странице ... Я бы хотел, чтобы она была в мертвой точке текущего порта просмотра ... дополнительно я бы хотел предотвратить прокрутку ... но, возможно, я вернись к этому.

Ответы [ 2 ]

1 голос
/ 20 июля 2011

Мертвая точка оставлена ​​для упражнения для пользователя, но ключевым компонентом являются Window.getScrollTop () и Window.getScrollLeft ()

1 голос
/ 18 июля 2011

Стандартный метод center() не делает то, что вы хотите. Таким образом, вы должны рассчитать позицию самостоятельно. Есть одна большая проблема, которая заключается в том, что у вашего всплывающего окна нет размера до его фактического показа. Размер любого элемента DOM не может быть запрошен, пока он не будет полностью присоединен к DOM. Вы должны унаследовать класс всплывающих окон GWT и переопределить метод onLoad(), чтобы получить размер всплывающего окна. Попробуйте что-то вроде этого:

public class CenteredDialogBox extends DialogBox {

    private Widget _parent;

    public CenteredDialogBox(Widget parent) {
        _parent = parent;
    }

    @Override
    public void onLoad() {
        super.onLoad();

        int parentMiddle = _parent.getAbsoluteLeft() + _parent.getOffsetWidth() / 2;
        int popupLeft = parentMiddle - getOffsetWidth() / 2;
        int parentCenter = _parent.getAbsoluteTop() + _parent.getOffsetHeight() / 2;
        int popupTop = parentCenter - getOffsetHeight() / 2;

        setPopupPosition(popupLeft, popupTop);
    }

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