子ウィジェットの「リスト」を表示する複合ウィジェットを作成しようとしていますが、この設定で css を機能させるのに問題があります。解決策を見つけ出すために、簡単なデモを作成しました。このように親ウィジェットを指定しようとしました
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field='res' type='egov.widgets.discussion.client.poc.Resources' />
<g:FlowPanel ui:field="childPanel" stylePrimaryName='{res.style.parentStyle}'>
</g:FlowPanel>
</ui:UiBinder>
コード付き
public class CssParent extends Composite{
interface MyUiBinder extends UiBinder<Widget, CssParent> {}
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
@UiField FlowPanel childPanel;
public CssParent() {
initWidget(uiBinder.createAndBindUi(this));
CssChild child = new CssChild();
childPanel.add(child);
}
}
子ウィジェットは単に次のように指定されます
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field='res' type='egov.widgets.discussion.client.poc.Resources' />
<g:HTMLPanel stylePrimaryName='{res.style.childStyle}'>
Howdy folks
</g:HTMLPanel>
</ui:UiBinder>
ご覧のとおり、どちらもリソース バンドルを参照しています。
public interface Resources extends ClientBundle {
@Source("CssDemo.css")
Style style();
public interface Style extends CssResource{
String parentStyle();
String childStyle();
}
}
これも CssDemo.css: .parentStyle{ background-color: gray; を参照しています。}
.parentStyle .childStyle{
background-color: yellow;
}
しかし、何らかの理由で、これらの css ルールが上記の 2 つの div 要素に適用されることはありません。これが失敗する理由について何か考えはありますか? または、スタイルに異なる css クラス間の依存関係ルールが含まれている場合、ウィジェット間で .css スタイル シートを共有するより良い方法はありますか?