Android中的连字符

作为国际化Android应用程序的一部分,我遇到了需要在正确的位置dynamic地换行或连字符号。

我的所有string都是在strings.xml文件中进行了外部化处理,但是我还没有在Android中find关于连字符的任何文档。

我希望能够build议类似于我在LaTeX中可以做到的连字符位置:

http://en.wikipedia.org/wiki/Hyphenation_algorithm

但是如果可能的话,没有发现任何迹象? 我错过了框架中的任何东西吗? 还有其他人在做什么,比如说日语的string,没有明显的地位来分手。 你只是在正确的位置添加空格吗?

我可以dynamic调整字体的大小,以适应某些布局,但对于多行不能使用的更长的消息。 该怎么办?

Solutions Collecting From Web of "Android中的连字符"

换行符的pipe理可能是一个麻烦。 最好的select是使用UTF换行符修饰符控制字符,因为android支持完整的UTF

我知道有人提到“软连字符”,但还有更多。

您还可以在缺less空格的语言上使用单词之间的“零宽度空间”,因此您不必依靠字典解释。 你也可以用这个作为一个软连字符的语言,允许在特定的点上打破某些文字。

当使用不想破碎的复合词时,但希望文本到语音系统正确识别它,则应使用“字词分隔符”字符。 不要使用“Zero Width Non Breaking Space”,因为它被用作BOM。

最后,如果你想要一个空间,但不想换行,可以使用一个简单的不间断空格。

以下库支持连字符。 它为你做所有types的文本alignment(左/右/中/alignment)和连字符。 并非所有语言都已添加,但可以根据需要添加。 该库使用NO WEBVIEWSSUPPORTS SPANNABLES,并允许长文本

图书馆 : https : //github.com/bluejamesbond/TextJustify-Android

ANDROID :2.2至5.X

build立

DocumentView documentView = addDocumentView(new StringBuilder("Your long text content"), DocumentView.PLAIN_TEXT); documentView.getDocumentLayoutParams().setTextAlignment(TextAlignment.JUSTIFIED); documentView.getDocumentLayoutParams().setHyphenator(new Hyphenator(HyphenPattern.PT)); documentView.getDocumentLayoutParams().setHyphenated(true); 

从Android 4.3开始,在三星Galaxy设备上工作的软连字符 。

 <!-- key combination to enter soft hyphen: [Alt Gr]+[-] or [Alt]+240 on German PC, see https://de.wikipedia.org/wiki/Weiches_Trennzeichen#Darstellung_auf_Computersystemen --> <string name="no_connection">Nicht ver-bund-en</string> 

在这里输入图像说明

由于我的用例非常狭窄,所以我只在“verbunden”一词中使用了一个软连字符。 Unicode \ u00ad没有任何作用。

问题是旧的,但只是find了我的最佳解决scheme:

我不得不说,我在Xamarin编程,所以代码是在C#中,但不应该是一个问题,端口到Java。

我使用了NHyphenator Logic( https://github.com/alkozko/NHyphenator )来插入SoftHyphens(UTF8符号 – 0x00AD),所以Textview在正确的位置连字符。

为了让其他语言的连字我使用openoffice字典。 例如,我必须让德语 – 瑞士语连字符

http://extensions.openoffice.org/en/search?f%5B0%5D=field_project_tags%3A157 1.下载扩展名2.用winrar或其他东西解压缩3.复制hyph_xx_xx / hyph_xx_xx.dic文件4.添加新的语言到连字符类

NHyphernator资源文件被声明为:hyph-xx-xx.pat.txt – >没有注释的dic文件的内容hyph-xx-xx.hyp.txt – >包含word-exceptions的文件,其中连字逻辑没有给出正确的结果

如果有人要Xamarin便携式图书馆告诉我,我可以上传它。

编辑:

在TExtview中应该将breakstrategy设置为Balanced。 API级别> 23,否则不要使用breakstrategy。

编辑:

这是mono / xamarin代码: https : //github.com/sma84/NHyphenator-Mono

它是Android 6 Marshmellow的新function。

尝试添加到您的TextView的XML

 android:hyphenationFrequency="none" 

setEllipsize可能会有帮助,如果这个错误还没有解决。