2

即使用户向下滚动,我也需要在页面顶部显示一个加载弹出窗口。

到目前为止我尝试的是设置弹出位置如下

setPopupPosition(Window.getClientWidth()/2 , 0);

弹出窗口显示在绝对顶部。

4

3 回答 3

7

如果您从不同的角度查看它,这种情况可以很容易地解决:不是弹出位置应该调整到页面 - 相反,页面应该在居中弹出窗口后面滚动,例如:

final ScrollPanel scrollPanel = new ScrollPanel();
RootLayoutPanel.get().add(scrollPanel);
pagePanel = new FlowPanel();
scrollPanel.setWidget(pagePanel);
pagePanel.add(...);

现在将整个页面内容添加到pagePanel(而不是将它们直接添加到 rootPanel)。

然后你可以像这样创建弹出窗口:

final PopupPanel popupPanel = new PopupPanel();
popupPanel.add(...);
popupPanel.center();

当窗口调整大小时,您仍然需要重新居中弹出窗口,但除此之外,弹出窗口将始终位于滚动页面前面的中心。

于 2012-08-20T23:20:34.897 回答
1

为此,您可以实施Window.addWindowScrollHandler. 无论您做什么,它都将始终处于领先地位。

DialogBox dialog = new DialogBox();
dialog.setWidget(...);
Window.addWindowScrollHandler(new ScrollHandler() {
    @Override
    public void onWindowScroll(ScrollEvent event) {
        dialog.setPopupPosition((Window.getClientWidth() - widthOfDialog) / 2, event.getScrollTop());
    }
});

希望这有帮助..谢谢..

于 2012-08-21T13:04:02.080 回答
0

对我有用的解决方案是这个

 setPopupPosition(Window.getClientWidth()/2 , Window.getScrollTop());
于 2012-08-20T23:25:26.673 回答