1

我有一个 TabLayoutPanel,我不想像下面的代码示例 ( tabPanel.setHeight("100px");) 那样给它一个固定的高度。我想给它标签内容的高度,例如第一个标签中的 HTML-Widget)。如果我不手动设置高度,则根本不会显示选项卡内容。有什么办法可以让这个工作的高度适应内容吗?

public class GWTTest implements EntryPoint {

    public void onModuleLoad() {
        TabLayoutPanel tabPanel = new TabLayoutPanel(3, Unit.EM);

        tabPanel.setAnimationDuration(400);
        tabPanel.add(new HTML("Tab1 Content"), "Tab 1");

        tabPanel.add(new HTML("Tab2 Content"), "Tab 2");

        tabPanel.setHeight("100px");

        RootPanel.get().add(tabPanel);

    }
}

我还尝试使用“溢出”和“位置”属性直接在 css 中搞乱,但这总是会破坏动画或其他东西。

编辑:似乎最简单的方法是实现我自己的选项卡面板 - 或使用现有的 javascript 库。

4

2 回答 2

3

布局面板是 GWT 中的一种特殊容器,它需要父级的尺寸并且可以自行调整尺寸。基础是两个接口ProvidesResizeRequiresResize- 表示对象将调整其子对象的大小,另一个表示必须在父对象的大小更改时对其进行调整。大多数布局面板(如TabLayoutPanel)都实现了两者 - 它需要从其父级更改大小,并且当它获取它时,它将调整其子级,每个选项卡的大小。

不过,要启动它,您需要将根小部件添加到 a RootLayoutPanel,而不是 a RootPanel。有几个主要区别 - 只有一个 RootLayoutPanel(无get(String)方法),并且RootLayoutPanel会调整其子项的大小,而 RootPanel 不会。

使用RootLayoutPanel.get().add(tabPanel)而不是RootPanel.get().add(tabPanel).

于 2013-06-10T02:48:44.957 回答
0

我也遇到过这个问题,但遗憾的是它需要设置高度。所有解决方法都失败了。但其中一些建议如下。

您可以尝试TabLayoutPanelHeaderPanel替换:

包含页眉(顶部)、页脚(底部)和内容(中间)区域的面板。页眉和页脚区域会自然调整大小。内容区域分配了页眉和页脚区域之间的所有剩余空间。

或者,您可以覆盖计算嵌入内容高度的onResize()方法并设置适当的高度。ResizeLayoutPanel

如果你想要滚动功能,你必须将你嵌入VerticalPanelScrollPanel或使用 CSS 来设置 oferflow 属性。

于 2013-06-09T17:53:51.753 回答