2012-03-29 50 views
3

我有一个非常简单的GWT应用程序,它收集一些数据并在用户单击“提交”时提供确认对话框。我创建一个com.google.gwt.user.client.ui.DialogBox,填充它,然后调用它的center()方法。居中GWT DialogBox不尊重“缩放”因素我的手机浏览器

在桌面Web浏览器中,对话框正确显示居中。然而,在手机浏览器中,居中不考虑缩放。也就是说,如果我放大窗体,然后单击提交,对话框将集中在整个页面中......而不是我当前的实际视口。如果我已经放大很远,对话框根本不可见。应用程序看起来已经死了,除非你聪明到可以缩小。大致相同的事情发生在iPhone和我的Android手机上。

效果可以从Google演示页面http://gwt.google.com/samples/Showcase/Showcase.html#!CwDialogBox中看到将手机放在纵向,放大显示对话框按钮,然后单击按钮。该页面将显示为冻结。你看不到弹出窗口,无法平移。你唯一能做的就是缩小。

我会很高兴与任何解决方案在这里。例如,对话可能会以某种方式集中在我的“有效”视口中。或者也许有什么方法可以让浏览器缩小范围?

回答

1

那么,我还没有想出如何获得有关实际视口的信息。也就是说,用户在放大后可以看到的内容。但合理的解决方案是将对话框放在提交按钮的顶部。由于他们只是点击提交按钮,它必须是一个明智的地方来显示对话框。

int targetX = submitButton.getAbsoluteLeft() + (submitButton.getOffsetWidth() - dialogBox.getOffsetWidth())/2; 
int targetY = submitButton.getAbsoluteTop() + (submitButton.getOffsetHeight() - dialogBox.getOffsetHeight())/2; 
dialogBox.setPopupPosition(targetX, targetY);