GWT强制高度HTMLPanel

时间:2010-05-18 13:07:29

标签: gwt cross-browser height uibinder generated

我正在开发一个GWT项目,我遇到了一个有问题的跨浏览问题。

使用firefox时,所有页面的显示都有问题。我找到了原因: 在UIBinder中,我的每个页面都被“g:HTMLPanel”包装:在xml文件的开头和结尾处,包装所有页面的内容

执行此操作时,生成的面板代码如下:

div style="width: 100%; height: 100%; ....

问题是“身高:100%”。如果我用firebug将其移除,显示效果会很好。 所以我的目标是以编程方式删除生成的100%高度..但没办法做到! 我尝试了所有东西:setHeight,setSize,使用getElement()方法处理Element本身。方法()...我尝试做了类似style.clear()的事情,一切都有机会工作..但是在生成中代码“身高:100%”将始终存在。如果我将它的高度设置为“50%”或“50px”则完全没有效果。

我甚至尝试给它一个ID,然后使用纯javascript改变它的风格,但也没有解决方案..

注意:我确信我正在使用正确的元素:例如,添加styleName效果很好。

有什么想法吗?

我的帮助将非常感激,我不知道如何删除这些生成的代码,我已经找了好几个小时:(:( :( :(

致以最诚挚的问候,

尼尔斯

2 个答案:

答案 0 :(得分:0)

我刚从firebug中的uibinders检查了GWT生成的一些代码,并且< g:HTMLPanel>没有添加任何宽度或高度样式。

我没有< g:HTMLPanel>作为我的uibinder中的根元素,我有自己的类。

<a:FormPanel ui:field="form">
    <g:HTMLPanel>
        <input type="hidden" ui:field="discoveryId" />
        <table cellpadding="2" cellspacing="0" class="{widgets.gridPanel}">
            <tr>
                <td>Name:*</td>

使用说FlowPanel作为根uibinder类,然后使用HTMLPanel?

如果失败,你总是可以使用!important css规则覆盖div上分配的规则。

.myHTMLPanel {
   width: auto !important;
   height: auto !important;
}

答案 1 :(得分:0)

这可能是因为HTMLPanel被包装到DeckPanel中。 DeckPanel将“height:100%”和“width:100%”添加到元素中。

显示窗口小部件后,添加以下代码:

deckPanel.add(widget);    
deckPanel.showWidget(0);
Element e = DOM.getParent(widget.getElement());
DOM.setStyleAttribute(e, "height", "");
DOM.setStyleAttribute(e, "width", "");
widget.setHeight("");
widget.gwtContainer.setWidth("");