相対的なサイズパラメータを持つスクロールパネルを作成しようとしています。ただし、ScrollPanel.setSize(String, String)
によって返されるようなint値がある場合、この関数を操作することはできませんWindow.getHeight
。
試しScrollPanel.setSize("100%", "150px");
てみると、スクロールパネルの高さは変更されず、代わりにデフォルトが使用されます。どんな助けでもいただければ幸いです。
[ScrollPanel] [1]のGWTドキュメントによると、相対的なCSS単位ではなく絶対的なCSS単位で幅を使用することについてはかなり厳格なようです。したがって、問題は「100%」パラメータにある可能性があります。
[1]: http: //google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/ui/ScrollPanel.html#setSize (java.lang.String 、java。 lang.String)
高さでできるかどうかはわかりませんが、幅でうまくいったのは、最初に任意の幅を設定し、次に要素を取得してwidthプロパティを設定することでした。
ScrollPanel myScrollPanel = new ScrollPanel();
myScrollPanel.setSize("2112px", "150px"); // Arbitrary width.
myScrollPanel.getElement().getStyle().setProperty("width", "100%"); // or "auto"
これがあなたのために働くことを願っています(あなたはこれを5年前に尋ねたので、あなたはおそらくもうそれについてあまり心配していません)!
ここから私の答えをコピーする:相対的なサイズでScrollPanelを使用する方法
================================================== ================
まず、ScrollPanelは、理由がわからないため、他のウィジェットとして機能しないものです。相対サイズ(50%)を設定できません。スタイルを指定すると、どこかで失われ、ページから見つかりません。
私の解決策は、ResizeLayoutPanelを使用することです。Andreiは、ProvidesResizeを使用することを提案しましたが、provide / require resizeチェーンが壊れていないことを要求します。これは、非常に注意が必要な場合があります。このResizeLayoutPanelは、「1つの子にResizeを提供しますが、RequiresResizeは必要ありません」を見つけました。これは、コンポジットのルートパネルの最適な候補です。次に、親のResizeLayoutPanelによって呼び出されるたびに、「onResize」メソッドでScrollPanelを拡張してサイズを変更します。
私の最初の質問に対する答えはまだありません:ScrollPanelによって、そもそもこのように動作しますか?私はそのソースコードで答えを見つけようとしましたが、成功しませんでした(ソースコードの研究に十分な時間を費やしていませんでしたが)。
public class My100PctScrollPanel extends ScrollPanel {
@Override
public void onResize() {
// Window.alert("on resize");
this.setWidth(this.getParent().getOffsetWidth()+"px");
this.setHeight(this.getParent().getOffsetHeight()+"px");
super.onResize();
}
}
........
compositeRoot = new ResizeLayoutPanel();
........
scrollPanel = new My100PctScrollPanel();
compositeRoot.clear();
compositeRoot.add(scrollPanel);