【发布时间】:2012-10-02 06:48:09
【问题描述】:
我正在使用GWT 2.4 开发GWT mobile 应用程序。我希望我的DialogBox 在缩放或普通视图中始终位于用户viewport 的中心。在普通视图中,center() 可以处理它,但是当页面缩放时,DialogBox 会弹出整个浏览器窗口的中心,其中包括页面的滚动部分而不是用户视口的中心。这个怎么做?请帮忙。提前致谢。
【问题讨论】:
我正在使用GWT 2.4 开发GWT mobile 应用程序。我希望我的DialogBox 在缩放或普通视图中始终位于用户viewport 的中心。在普通视图中,center() 可以处理它,但是当页面缩放时,DialogBox 会弹出整个浏览器窗口的中心,其中包括页面的滚动部分而不是用户视口的中心。这个怎么做?请帮忙。提前致谢。
【问题讨论】:
您需要将处理程序附加到捕获缩放事件的窗口。在这个处理程序中,您调用
myDialogBox.setPopupPosition((Window.getClientWidth() - myDialogBox.getOffsetWidth())/2, (Window.getClientHeight() - myDialogBox.getOffsetHeight())/2);
}
如果您想区别对待,您可能需要添加检查对话框大于浏览器窗口的情况。
【讨论】:
我必须在我的窗口及其构造函数上添加implements ResizeHandler,我添加了ResizeEvent handler > Window.addResizeHandler(this);。由于我正在实现ResizeHandler 接口,我需要覆盖以下内容:
@Override
public void onResize(ResizeEvent event) {
if (isShowing() ) { //check if popup is showing
int left = (Window.getClientWidth() * 0.5 - (widthOfMyWindow * 0.5) );
int top = (Window.getClientHeight() * 0.5 - (heightOfMyWindow * 0.5) );
setPopupPosition( left < 10 ? 10 : left, top < 0 ? 0 : top );
}
}
【讨论】: