我正在尝试制作一个具有相对大小参数的滚动面板。但是ScrollPanel.setSize(String, String)
,如果您有 int 值(例如Window.getHeight
.
当我尝试ScrollPanel.setSize("100%", "150px");
时,它不会改变滚动面板的高度,而是使用默认值。任何帮助,将不胜感激。
根据 [ScrollPanel][1] 的 GWT 文档,他们似乎非常严格地使用绝对而不是相对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)
我不确定是否可以与高度有关,但对我有用的宽度是首先设置任意宽度,然后获取元素并设置宽度属性。
ScrollPanel myScrollPanel = new ScrollPanel();
myScrollPanel.setSize("2112px", "150px"); // Arbitrary width.
myScrollPanel.getElement().getStyle().setProperty("width", "100%"); // or "auto"
希望这对你有用(尽管你在 5 年前问过这个问题,所以你可能不再担心它了)!
从这里复制我的答案:How to use ScrollPanel with relative size
==================================================== =================
首先,由于我不知道为什么,ScrollPanel 不能充当其他小部件。无法设置相对大小(50%),如果我给它一些样式,它会在某处丢失并且无法从页面中找到。
我的解决方案是使用 ResizeLayoutPanel。Andrei 建议使用 ProvidesResize 但要求提供/要求调整大小链保持不间断,这可能非常棘手。我发现这个 ResizeLayoutPanel “ProvidesResize to its one child, but doesn't RequiresResize”,它是我的复合材料根面板的完美候选者。然后,只要它被父 ResizeLayoutPanel 调用,我只需扩展 ScrollPanel 以在“onResize”方法中调整自身大小。
我的第一个问题仍然没有答案:由 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);