我试图弄清楚如何覆盖DataGrid.css中定义的 dataGridHeader 样式!GWT 核心。GWT 样式名称被 adler32 混淆了,所以我不能简单地在我的 css 中使用 .dataGridHeader。就我而言,我希望对空白进行简单的更改:正常。
我在这里看到过关于注入 css 的文章,但它们似乎都是类级别的,而不是像 DataGrid 这样的组件中使用的子样式。
如何覆盖在 DataGrid 等组件中使用的标题样式?
我试图弄清楚如何覆盖DataGrid.css中定义的 dataGridHeader 样式!GWT 核心。GWT 样式名称被 adler32 混淆了,所以我不能简单地在我的 css 中使用 .dataGridHeader。就我而言,我希望对空白进行简单的更改:正常。
我在这里看到过关于注入 css 的文章,但它们似乎都是类级别的,而不是像 DataGrid 这样的组件中使用的子样式。
如何覆盖在 DataGrid 等组件中使用的标题样式?
就像使用任何ClientBundle
and CssResource
: 创建一个接口,该接口使用指向您自己的 CSS 文件(或者可能指向原始文件和您自己的文件,因此它们将组合在一起)的注释来扩展Datagrid.Resources
和覆盖该dataGridStyle
方法。@Source
这样做会覆盖应用程序中所有 DataGrid
s 的样式(它实际上取决于哪个CssResource
实例ensureInjected()
首先获得:来自原始实例的实例DataGrid.Resources
或来自子接口的实例):因为您使用相同的返回类型 ( DataGrid.Style
),混淆的类名将是相同的。
如果您想根据具体情况更改样式,那么,另外,声明一个扩展接口DataGrid.Style
并将其用作dataGridStyle
覆盖的返回类型:因为混淆的类名基于完全限定的接口名称和方法名称,您的DataGrid.Style
子接口将生成与原始接口不同的混淆类名DataGrid.Style
。
然后当然是GWT.create()
您的DataGrid.Resources
子接口并将其作为参数传递给DataGrid
构造函数。
另请参阅http://code.google.com/p/google-web-toolkit/issues/detail?id=6144
谢谢托马斯。
只是为了让读者更容易...
创建一个新接口
public interface GwtCssDataGridResources extends DataGrid.Resources {
@Source({Style.DEFAULT_CSS, "gwtDataGrid.css"})
Style dataGrid();
}
使用静态引用
public static final GwtCssDataGridResources gwtCssDataGridResources = GWT.create(GwtCssDataGridResources.class);
static {
gwtCssDataGridResources.dataGrid().ensureInjected();
}
最后创建一个新的 CSS 文件 gwtDataGrid.css。请注意,如果您需要覆盖样式,则必须在每个定义上使用!important 。
.dataGridHeader {
color: #FF0000 !important;
}
.dataGridFirstColumnHeader {
-moz-border-radius-topleft: 5px;
-webkit-border-top-left-radius: 5px;
}
.dataGridLastColumnHeader {
-moz-border-radius-topright: 5px;
-webkit-border-top-right-radius: 5px;
}
就是这样