【问题标题】:GWT - Label not wrapping text properly?GWT - 标签没有正确环绕文本?
【发布时间】:2013-08-18 02:32:06
【问题描述】:

我在 LayoutPanel 内的 ScrollPanel 内的 FlexTable 单元格中有标签。 ScrollPanel(以及它的父 LayoutPanels)的大小是根据用户设备的窗口大小动态设置的(因此不使用精确的 CSS 大小)。 FlexTable、它的单元格和标签的宽度设置为100%。此外,FlexTable 设置为具有fixed 表格布局。并且标签被赋予break-word 的自动换行设置。在大多数情况下,这可以正常工作。带有短单词的句子可以毫无问题地换行到下一行,并且 Label 保持与包含表格单元格的大小相同。但是,当一个单词需要分成两行以适应时(这种情况经常发生,因为页面的链接经常放置在这里),标签的宽度会自动扩展到包含它的单元格的大小之外。我知道这是 GWT 自行调整标签大小的结果,但我不确定如何防止这种情况。我尝试将分词设置为break-all,但这会导致到达行尾的短词被打破(比如“this”变成“th”和“is”),这很愚蠢。无论如何我可以强制 GWT 标签仅是其包含单元格宽度的 100%,并且在保持此设置动态的同时不让它超出该宽度?非常感谢!

【问题讨论】:

  • 这可能会有所帮助:stackoverflow.com/questions/5241369/…
  • @DavidLevesque:下次项目摆在我面前时,我会尝试使用预包装,但我感觉它不会起作用。由于标签实际上正在改变它的大小以适应文本,我认为改变它的包装方式不会有帮助,因为标签只是它不需要包装的大小。我猜我只需要找到一种方法来强制标签的大小不扩大。 (还是)感谢你的建议。再说一次,我还是会试一试的。
  • @DavidLevesque:我尝试了预包装,但没有成功。它仍然像以前一样扩展标签。不过感谢您的建议。

标签: java gwt word-wrap


【解决方案1】:

我实际上不认为有一个好的解决方案;要么你只允许在正常点(空格)打断,要么你可以在单词内部打断,但是没有办法阻止只用 CSS 打断短词。

由于链接会引起问题,我能给出的最佳建议是以某种方式缩短链接,也许只显示有限数量的字符;如果链接是可点击的,这应该不是什么大问题。

或者,您可以为标签或单元格设置固定大小(仍可以以 % 为单位)并使用 overflow-x 隐藏任何突出的文本,如果有一个非常长的单词不能被打破。

【讨论】:

  • 感谢您的建议。标签和单元格的大小已设置为固定 (100%) 大小。您会期望这意味着它们永远不会大于宽度,但标签仍然会调整到比其父母的 100% 空间更大的尺寸。我想我可以在单元格上使用overflow-x,但这不是我最喜欢的解决方案。当然,必须有一种方法可以防止标签以这种方式调整大小,即使这意味着自定义标签类。这也不是我最喜欢的方法,但如果我找不到其他方法,它应该能够工作。
  • 问题是,暂时完全忽略 GWT,您希望如何在理论上解决这个问题?比如,如果你有长链接,你想发生什么?例如,您是否只想中断超过一定长度的单词?
  • 如果一个单词不能容纳在当前行的剩余空间中,我希望将它移到下一行,然后如果它比行的整个宽度长,则该单词应该被打破到两条线上。我发布的答案实现了这一点。不过感谢您的建议!
【解决方案2】:

显然百分比会导致问题。如果您为宽度指定 px 值,则长字符串将在达到限制后换行。当然,由于我是动态调整大小的,所以我需要以更复杂的方式获取这个 px 值。这样做的方法是使用Window.getClientWidth() 来获取用户屏幕的宽度,然后每次使用它的百分比时,您需要根据您在 CSS 中使用的百分比手动计算 px 值(由于获得 100 像素的 33% 为您提供 33 像素,因此您需要手动检查何时应添加额外的像素,以免丢失任何像素),然后对于滚动面板,您可以获得不包括滚动条的面板宽度通过从当前面板宽度中减去 NativeVerticalScrollbar.getNativeScrollbarWidth()。这种方式对我来说效果很好,因为我已经根据窗口大小计算每个面板的像素大小,直到滚动面板。

【讨论】:

  • 啊,有道理!作为一种改进的解决方案,如果您使用CssResource,您可以使用@eval 在您的 CSS 中进行这些计算,而不必在代码中进行!
  • @Marconius:我目前没有使用它,但这听起来肯定很有用,我一定会研究一下。谢谢! (您对此信息的回答值得赞许)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 2022-10-17
  • 1970-01-01
  • 2015-10-31
  • 2019-05-09
  • 2013-08-29
  • 1970-01-01
相关资源
最近更新 更多