GWT - Проблемы со стилем TabLayoutPanel
Я хочу реализовать горизонтальную панель навигации, используя TabLayoutPanel
, используя пользовательский стиль, чтобы соответствовать моим потребностям.
Но я не знаю, как переопределить default
моделирование. Вот UiBinder
шаблон:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:style>
.gwt-TabLayoutPanel .gwt-TabLayoutPanelHeader {
background-color: red;
padding: 0;
margin: 0;
}
</ui:style>
<g:TabLayoutPanel barHeight="3.75" barUnit="EM">
<g:tab>
<g:header>Latest</g:header>
<g:Label>Latest Activities</g:Label>
</g:tab>
<g:tab>
<g:header>Patients</g:header>
<g:Label>Patients</g:Label>
</g:tab>
</g:TabLayoutPanel>
</ui:UiBinder>
Это не работает Но как я могу ссылаться на стили по умолчанию?
7 ответов
Я думаю, что прикрепить отдельный CSS - встроенные стили для использования с {style.xyz} в том же шаблоне. На самом деле есть второе решение. Если вы настаиваете на том, чтобы он был в ui.xml - используйте внешнюю область: http://code.google.com/webtoolkit/doc/latest/DevGuideClientBundle.html
Чтобы уточнить ответ Атамура, второй вариант, который он предлагает, действительно лучший из двух, особенно если все другие ваши стили установлены с использованием UiBinder или клиентских пакетов. По сути, вы добавляете следующую строку ниже вашего начального <ui:style>
тег:
@external .gwt-TabLayoutPanel .gwt-TabLayoutPanelHeader
Проблема в том, что GWT запутывает правила стиля, которые вы определили в своем шаблоне UiBinder. Поэтому, когда вы пишете "gwt-TabLayoutPanel", это скрывается под чем-то вроде "GMDW0RHDH", который затем никогда не применяется к элементам вашего TabLayoutPanel. Добавление "@external" отключает эту запутанность и позволяет применять стили в UiBinder так, как вы ожидаете.
Или вы можете просто добавить !important
к вашим определениям стиля...
Вот пример, который работает
Если вы хотите увидеть, как объявляется файл GWT css:
- Откройте gwt-user.jar
- Найдите пакет темы, например: com.google.gwt.user.theme.clean для Clean Theme, и откройте public/gwt/clean/clean.css.
- Найдите как.gwt-TabLayoutPanel и посмотрите, как он объявлен.
- Создайте свой собственный файл CSS и объявите его в your_module.gwt.xml
Вы можете изменить тему, если хотите.
<ui:style>
@external onMouseOverBorderColor onMouseOutBorderColor;
.onMouseOverBorderColor {border-color: red; border-style: outset}
.onMouseOutBorderColor {border-color: black; border-style: outset}
</ui:style>
После некоторого исследования я использовал следующий подход, и он работал... я использую GWT 2.5
/**the panel itself**/
.gwt-TabLayoutPanel {
border: none;
margin: 0px;
padding: 0px;
}
/**the tab bar element**/
.gwt-TabLayoutPanel .gwt-TabLayoutPanelTabs {
background-color: #F4F4F4 !important;
}
/**an individual tab**/
.gwt-TabLayoutPanel .gwt-TabLayoutPanelTab {
background-color: #6F6F6E !important;
}
.gwt-TabLayoutPanel .gwt-TabLayoutPanelTab-selected {
background-color: white !important;
}
/**an element nested in each tab (useful for styling)**/
.gwt-TabLayoutPanel .gwt-TabLayoutPanelTabInner {
font-family: Arial !important;
}
/**applied to all child content widgets**/
.gwt-TabLayoutPanel .gwt-TabLayoutPanelContent {
border: none;
margin: 0px;
overflow: hidden;
padding: 15px;
}