.center()を呼び出すと、パネル全体がページ中央に表示されます。現在のビューポートの中心が死んでいますが...さらにスクロールを防止したいのですが、それに戻る。GWT PopupPanelをモバイルサファリのユーザーの現在のビューポートに集中させる方法を教えてください。
3
A
答えて
1
死点がユーザーのための運動のために残されますが、キーコンポーネントはWindow.getScrollTop()とWindow.getScrollLeft()
1
標準center()
メソッドは、あなたが望むことをしません。だから、自分で位置を計算しなければならない。ポップアップに実際に表示される前にサイズがないという大きな問題が1つあります。 DOM要素が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);
}
}
それは、これがあるようには思えないです親ウィジェットの量が現在スクロールされている位置よりも上にあることを考慮に入れるか、何か不足していますか? – danb