Пытаясь заставить UIBinder дать мне промежуток, а не div

Я создаю виджет с UiBinder, и мне нужно включить его в <span />, но UiBinder дает мне <div />. Например. <g:HTMLPanel /> = > <div />. HorizonPanel, FlowPanel, VerticalPanel также выдают только <div />.

Кто-нибудь знает решение?

Ответы

Ответ 1

Попробуйте следующее:

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
         xmlns:g='urn:import:com.google.gwt.user.client.ui'>
    <g:HTMLPanel tag="span">
        <!-- your stuff -->
    </g:HTMLPanel>
</ui:UiBinder>

Ответ 2

Вы можете использовать <div>, но просто добавьте display: inline в свой CSS, который будет отображаться так, как будто это был <span>.

Изменить: фиксированное место в конце, где я сказал "div", но имел в виду "span".

Ответ 3

Что касается вышеприведенного ответа Роберта (извините, я не могу понять, как напрямую это прокомментировать)

Это не будет работать из коробки, так как виджеты не могут быть размещены внутри обычного HTML (компилятор даст вам "ошибка: найденный виджет в контексте html" ). Но есть простой способ:

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
             xmlns:g='urn:import:com.google.gwt.user.client.ui'>
  <g:HTMLPanel>
    <span>
      <!-- Your content with widgets goes here -->
    </span>
  </g:HTMLPanel>
</ui:UiBinder>

Еще одна полезная вещь, которая стоит упомянуть, это виджеты InlineHTML и InlineLabel, способные удерживать arbitary html или обычный текст соответственно в <span>