我正在使用StackLayoutPanel将对话的堆叠电子邮件显示为gmail,其中标题是发件人,子项是电子邮件的正文。由于这种动态特性,我只能在代码中估计堆栈的高度。为了估计 body 的高度,我可以得到客户 window 的宽度,然后粗略地猜测 body 占据了多少行。但这很费力,而且可能是错误的。

我的问题是:对于GWT API 2.2,是否有一种方法让StackLayoutPanel知道并因此自动设置当前显示的子项(加上其标题和其他标题)的显示高度?

恐怕不是,所以我尝试了其他同样失败的事情。我试过了:

  • 将StackLayoutPanel放在ScrollPanel中:
  • 如果我没有在代码中设置堆栈的大小,那么我只能看到第一个堆栈的 header ,而只能看到它的主体和其他 header ,仅此而已。
  • 如果我设置了它,那么我就会遇到 body 的高度估计问题。
  • 不在ScrollPanel内:
    堆栈会自动获得剩余窗口空间的大小,但是如果标题太多,则它们会重叠并彼此叠加。

  • 另外,似乎StackLayoutPanel的默认行为是在分配的空间的最末端显示其余 header ,而不仅仅是在前一个 header 的子级之后。有可能改变吗?

    在此方面的帮助将不胜感激。

    //我知道类似的问题是this,但我想对此进行扩展。

    最佳答案

    是的,您的答案确实很简单,扩展了上一个问题:stackLayoutPanel.setHeight((40 * numChildren + 200)+“px”);

    200px的正文大小取决于内容和足够的内容,因此StackLayoutPanel可能不会为您削减它。

    我认为StackLayoutPanel附带的壁橱将使用固定的宽度,并在主体内部使用ScrollPanel(不是SP内的SLP)。这样,所有电子邮件都可以在ScrollPanel中显示所有内容。

    由于这是一个折衷方案,因此替代方法是仅实现自己的窗口小部件。我可能会使用VerticalPanel作为基础小部件,然后隐藏并显示div(同时始终保持标题可见)

    关于java - GWT StackLayoutPanel : dynamic and automatic height,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5714544/

    10-09 00:23