【问题标题】:GWT Relative WidthGWT 相对宽度
【发布时间】:2016-12-15 11:32:27
【问题描述】:

我正在尝试制作一个具有相对大小参数的滚动面板。但是,如果您有诸如 Window.getHeight 返回的 int 值,则无法使用 ScrollPanel.setSize(String, String) 函数。

当我尝试ScrollPanel.setSize("100%", "150px"); 时,它不会改变滚动面板的高度,而是使用默认值。任何帮助将不胜感激。

【问题讨论】:

  • 你能展示最简单的sn-p代码来重现问题吗?如果我们确切地知道您想要做什么,您更有可能获得帮助。
  • 查看这个问题(和我的回答):stackoverflow.com/questions/41110336/…

标签: java gwt width


【解决方案1】:

根据 [ScrollPanel][1] 的 GWT 文档,他们似乎对使用 absolute 而不是 relative 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)

【讨论】:

    【解决方案2】:

    我不确定是否可以与高度有关,但对我有用的宽度是首先设置任意宽度,然后获取元素并设置宽度属性。

    ScrollPanel myScrollPanel = new ScrollPanel();
    myScrollPanel.setSize("2112px", "150px");   // Arbitrary width.
    myScrollPanel.getElement().getStyle().setProperty("width", "100%");  // or "auto"
    

    希望这对你有用(虽然你在 5 年前问过这个问题,所以你可能不再太担心了)!

    【讨论】:

      【解决方案3】:

      从这里复制我的答案: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);
      

      【讨论】:

        猜你喜欢
        • 2013-05-18
        • 2015-01-09
        • 1970-01-01
        • 2012-05-12
        • 2013-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多