【问题标题】:how to get a GWT PopupPanel centered in a users current view port on mobile safari?如何让 GWT PopupPanel 在移动 safari 的用户当前视口中居中?
【发布时间】:2013-02-14 05:32:05
【问题描述】:

调用 .center() 使面板在整个页面上居中。我想让它成为当前视口的死点...另外我想防止滚动..但也许我会回到那个。

【问题讨论】:

    标签: gwt mobile-safari centering


    【解决方案1】:

    死点留给用户练习,但关键组件是 Window.getScrollTop() 和 Window.getScrollLeft()

    【讨论】:

      【解决方案2】:

      标准的center() 方法不能满足您的要求。所以你必须自己计算位置。有一个大问题是您的弹出窗口在实际显示之前没有大小。在完全附加到 DOM 之前,无法查询任何 DOM 元素的大小。您必须继承 GWT 弹出窗口类并覆盖 onLoad() 方法来获取弹出窗口的大小。试试这样的:

      public class CenteredDialogBox extends DialogBox {
      
          private Widget _parent;
      
          public CenteredDialogBox(Widget parent) {
              _parent = parent;
          }
      
          @Override
          public void onLoad() {
              super.onLoad();
      
              int parentMiddle = _parent.getAbsoluteLeft() + _parent.getOffsetWidth() / 2;
              int popupLeft = parentMiddle - getOffsetWidth() / 2;
              int parentCenter = _parent.getAbsoluteTop() + _parent.getOffsetHeight() / 2;
              int popupTop = parentCenter - getOffsetHeight() / 2;
      
              setPopupPosition(popupLeft, popupTop);
          }
      
      }
      

      【讨论】:

      • 这似乎不会说明当前滚动到位置上方的父小部件的数量..还是我错过了什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 2019-03-20
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      相关资源
      最近更新 更多