我有一个GWT Composite,动态添加了一些其他复合材料。 我想make parent复合Resize自动适应其所有子窗口小部件的高度。 我尝试为Composite设置setHeight(“100%”),但这不起作用。 任何想法如何实现这个功能?
感谢。 编辑:
final DockLayoutPanel dockLayoutPanel = new DockLayoutPanel(Unit.EM);
dockLayoutPanel.setStyleName("EntryPanel");
dockLayoutPanel.setSize("142px", "72px");
initWidget(dockLayoutPanel);
final VerticalPanel panel = new VerticalPanel();
panel.setSize("140px", "72px");
chckbxExport = new CheckBox("Export");
putField(CommonPresenter.CONSTANTS.EXPORT, chckbxExport);
dateBox = new DateBox();
dateBox.addValueChangeHandler(new ValueChangeHandler<Date>() {
@Override
public void onValueChange(final ValueChangeEvent<Date> event) {
dateChanged = true;
}
});
panel.add(dateBox);
final ListBox visibility = new ListBox();
final Label lblVisibility = new Label("Visibility:");
LabeledWidget vis = new LabeledWidget(lblVisibility, visibility);
for (int i = 0; i < CommonPresenter.CONSTANTS.VISIBILITIES.length; i++) {
visibility.addItem(CommonPresenter.CONSTANTS.VISIBILITIES[i]);
}
putField(CommonPresenter.CONSTANTS.VISIBILITY, visibility);
panel.add(vis);
panel.add(chckbxExport);
dockLayoutPanel.add(panel);
更新: 设置复合宽度以填充所有可用的窗口水平空间:
final int scrollBarWidth = 25;
// editPanel.setHeight("180px");
setWidth(Window.getClientWidth() - scrollBarWidth + "px");
// editPanel.setStyleName("EditorPanel");
Window.addResizeHandler(new ResizeHandler()
{
public void onResize(ResizeEvent event)
{
int width = event.getWidth();
setWidth(width - scrollBarWidth + "px");
}
});
答案 0 :(得分:5)
以下是通常使用HTML + CSS的方法:
auto
)。absolute
/ fixed
定位给孩子们。然后会自动调整父级的高度。这与GWT Composites相同 - 只需确保哪些CSS(包括样式属性)适用于您的元素!如果不确定,请使用Firebug。
如果你需要更多细节,那么你必须发布一些代码来展示你如何构建父复合(UiBinder,......?)
答案 1 :(得分:0)
您可以通过Window#getClientHeight()获取实际高度,而不是使用“100%”。要处理用户调整浏览器大小的方案,可以使用ResizeHandler。
答案 2 :(得分:0)
尝试覆盖Resize()(您的类必须扩展到ResizeComposite)。 在这个重新大小的方法中设置你想要的大小。
这是动态的,因为每次重新调整窗口大小时,都会调用此方法并相应地设置值。