当用户点击按钮时,我正在使用GWT PopupPanel在按钮上方显示弹出窗口。
我正在设置弹出窗口的位置并显示如下:
panel.setPopupPosition(leftPos, topPos);
panel.show();
但是,当我看到弹出窗口显示的最高值后,我发现它的位置略低于我指定的位置。
问题可能是setPopupPosition更改传入的值:
// Account for the difference between absolute position and the
// body's positioning context.
left -= Document.get().getBodyOffsetLeft();
top -= Document.get().getBodyOffsetTop();
如何确保GWT PopupPanel的位置正好是我给它的值? setPopupPosition()
似乎确实是设置位置的唯一方法,但它对我传入的位置进行了一些操作(这对我的用例来说是不必要的)。
答案 0 :(得分:0)
您可以使用直接访问弹出窗口的DOM元素来调整PopupPanel位置。但是应该在调用show()之后和弹出窗口可见之前完成。否则,你可能会看到一些“跳跃”效果。 示例:
PopupPanel popupPanel = new PopupPanel();
...
// this callback will be called after PopupPanel.show(), but before it is shown
popupPanel.setPopupPositionAndShow(new PositionCallback() {
@Override
public void setPosition(int offsetWidth, int offsetHeight) {
Style style = popupPanel.getElement().getStyle();
style.setLeft(100, Unit.PX);
style.setTop(100, Unit.PX);
}
});