喷气背包Compose文本断字。

6
我该如何在使用Jetpack Compose的Android应用中正确地使单词换行?我知道在Web上可以使用­来实现这种情况。我已经定义了包含可能换行的字符串值,例如:Korrespondenz\u00ADsprache。但是很遗憾,在Android上无法正常工作。我使用以下代码:
Text(
    text = "Korrespondenz\u00ADsprache",
    style = MaterialTheme.typography.h4
)

当前的结果如下:

输入图像描述

期望的结果应该是这样的:

输入图像描述

3个回答

6

您可以使用以下方式覆盖默认的连字配置(Hyphens = Hyphens.None):

   Text(
       text = "Korrespondenz\u00ADsprache",
       style = MaterialTheme.typography.h4.copy(hyphens = Hyphens.Auto)
   )

enter image description here

使用 Auto,单词将会在适当的连字符点自动断开。
需要 1.3.0-rc01 版本。

本周发布了Material Compose 1.3之后,这个解决方案运行良好。 - Benjamin Lüscher
连字符。在XML中,Auto似乎对应于HYPHENATION_FREQUENCY_NORMAL,但是否有办法更积极地使用连字符以利用空间,就像在XML中的HYPHENATION_FREQUENCY_FULL一样? - Arno Schoonbee
连字符。在XML中,Auto似乎对应于HYPHENATION_FREQUENCY_NORMAL,但是否有办法更积极地使用连字符来利用空间,就像在XML中的HYPHENATION_FREQUENCY_FULL一样? - undefined

4

0
是的,现在的compose在TextStyle中添加了一个连字符策略,通过添加Hyphens.Auto来实现,正如其他回答所解释的那样。
然而,即使添加了这个参数,我仍然没有得到我想要的结果。在大多数情况下,由于Android默认情况下尽量不断开单词,所以连字符'-'并没有被应用。
为了允许连字符应用于段落,你还应该添加另一个TextStyle属性lineBreak,然后它将变成这样。
 Text(
        text = "Korrespondenz\u00ADsprache",
        style = MaterialTheme.typography.h4.copy(
                hyphens = Hyphens.Auto,
                lineBreak = LineBreak.Paragraph)
 )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接