我有一个加载弹出窗口,我需要在页面顶部显示,即使用户向下滚动。
到目前为止我尝试的是将弹出位置设置如下
setPopupPosition(Window.getClientWidth()/2 , 0);
弹出窗口显示在绝对顶部。
答案 0 :(得分: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();
当窗口调整大小时,你仍然需要重新设置弹出窗口,但除此之外,弹出窗口将始终位于滚动页面前面的中心。
答案 1 :(得分: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());
}
});
希望这有帮助..谢谢..
答案 2 :(得分:0)
对我有用的解决方案是
setPopupPosition(Window.getClientWidth()/2 , Window.getScrollTop());