use uibinder css in java rather than xml
in my ui.xml, i have style like below
<ui:style src="../t开发者_运维问答eststyle.css" />
if i want to programmatically use the style inside java file rather than ui.xml, in my widget how to call .setStyleName(..) as the css is obfuscated
You need to do the following steps to use the styles in your view class:
- Define a interface that extends
CssResource
in your view class
interface Style extends CssResource {
String myStyle();
}
- Add a ui field of that type you just defined in your view class
@UiField
Style style;
- In your ui.xml add the
type
attribute to your<ui:style>
element (the type must match the interface of step 1):
<ui:style type="com.example.MyView.Style">
For each of the css classes you want to access in your view class you need to add a method to the
Style
interface (as done withmyStyle()
)You can now access the style via the
style
field (style.myStyle()
)
Hope that helps.
if i understand your question correct you have to define a class which extends from CssResource (you probably have done that already). In your view you can have a static instance of this class (let's call it cssInstance
). In the constructor you have to call cssInstance.ensureInjected()
. If you now want to add or set a style you can do it easly like Example: anyWidget.addStyleName(cssInstance.styleBorder());
精彩评论