GWT принудительная высота HTMLPanel - PullRequest
0 голосов
/ 18 мая 2010

Я занимаюсь разработкой проекта GWT и столкнулся с проблемой кросс-браузерной работы.

При использовании Firefox возникают проблемы с отображением всех страниц. Я нашел причину, почему: В UIBinder каждая из моих страниц заключена в "g: HTMLPanel": в начале и в конце XML-файла, чтобы обернуть содержимое всех страниц

При этом сгенерированный код панели выглядит следующим образом:

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

Проблема в том, что "высота: 100%". Если я уберу его с помощью firebug, дисплей будет идеальным. Поэтому моя цель состоит в том, чтобы программно удалить эту сгенерированную 100% высоту. Но это невозможно! Я перепробовал все: setHeight, setSize, работая над самим элементом с помощью getElement (). Method () ... Я пытался делать такие вещи, как style.clear (), все, что может иметь шанс работать .. Но в сгенерированном код, что "высота: 100%" будет всегда там. Если я установлю его высоту на «50%» или «50px», это никак не повлияет.

Я даже пытался дать ему идентификатор, а затем с помощью чистого javascript изменить его стиль, но тоже не нашел решения ..

Примечание: я уверен, что я работаю над правильным элементом: например, добавление styleName работает хорошо.

Есть идеи?

Ваша помощь будет очень признательна, я понятия не имею, как удалить этот бит сгенерированного кода, и я уже часами искал: (: (((((

)

С уважением,

Nils

Ответы [ 2 ]

0 голосов
/ 22 июня 2010

Это может быть связано с тем, что 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("");
0 голосов
/ 18 мая 2010

Я только что проверил часть кода, сгенерированного GWT из моих uibinders в firebug, и не добавляет стилевые настройки ширины или высоты.

У меня нет в качестве корневого элемента в моем 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?

В противном случае вы всегда можете использовать правило! Важное css для переопределения правил, назначенных в div.

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