在GWT中分割图像会导致不需要的空白区域

时间:2010-03-23 17:40:17

标签: css image gwt

我正在使用GWT 2.03并且我有一个图像,我想部分放置在一个背景区域,部分位于背景之上。我正在使用FlexTable来尝试完成此操作并使用GIMP将图像分割为两个部分。我试图将图像的顶部加载到第0行,将图像的底部加载到第1行。我将顶部图像的对齐方式设置为ALIGN_BOTTOM,但是单元格的底部有一些空间,所以图片的两个部分不要碰。

这是一张显示我正在谈论的内容的图片。我将单元格的背景设置为黄色显示单元边界所在的位置。底部图像和背景正确渲染。

![alt text] [1]

[1]:http://www。 freeimagehosting。净/上传/ f02462d659.png

以下是相关的代码段:

FlexTable table = new FlexTable();
table.setCellSpacing(0);
table.setCellPadding(0);
table.setBorderWidth(0);
FlexCellFormatter formatter = table.getFlexCellFormatter();

table.setWidget(0, 0, topImage);
formatter.setStyleName(0, 0, "topImageStyle");
formatter.setVerticalAlignment(0, 0, HasVerticalAlignment.ALIGN_BOTTOM);
table.setWidget(1, 0, bottomImage);
formatter.setStyleName(1, 0, "bottomImageStyle");

如何摆脱图像与细胞边界之间的空间?

3 个答案:

答案 0 :(得分:2)

这是由标准渲染模式引起的(有关详细说明,请参阅this article)。

快速修复(适用于此情况)是将图像切片设置为display: block样式。

PS:这个大小(2x1)可能无关紧要,但是当表的大小事先/已知时,应该使用Grid - 它只提供比FlexTable更好的性能。

答案 1 :(得分:0)

GWT有一个名为DecoratorPanel的类,它以此用例为目标。有关如何使用它的详细信息,请参阅the JavaDoc

答案 2 :(得分:0)

我有一些建议:

  • 我不确定,如果这适用于FlexTable,但请尝试setCellPadding(0)或setCellSpacing(0)
  • 尝试使用addStyleName或setStylePrimary而不是setStyleName
  • 尝试将样式设置为图像而不是格式化程序
  • 请尝试使用formatter.setStyleName(1,0,HasVerticalAlignment.ALIGN_TOP)格式化.setVerticalAlignment(0,0,HasVerticalAlignment.ALIGN_BOTTOM)。
  • Firebug可以帮助您找到,需要更改以解决问题。如果您发布代码和平(DOM),我们可以尝试帮助您。