Android中的连字符

问题描述 投票:39回答:6

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

我的所有字符串都在strings.xml文件中外部化,但我没有在Android中找到任何关于连字符的文档。

我希望能够建议类似于我在LaTeX中如何做的连字位置:

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

但我没有发现任何迹象表明这是可能的。我错过了框架中的任何内容吗?其他人在做什么,例如日语字符串没有明显的位置可以分解句子?你只是在正确的位置添加空格吗?

我可以动态调整字体的大小以适应某些布局,但是对于跨越多行不能工作的较长消息。该怎么办?

android textview textwrapping hyphenation
6个回答
7
投票

换行管理可能很麻烦。最好的选择是使用UTF换行符修饰符控制字符,因为android支持完整的UTF

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

您还可以在缺少空格的语言之间使用单词之间的“零宽度空间”,这样您就不必依赖字典解释。您也可以将此作为软连字符用于允许在某些点上突破某些单词的语言。

当使用您不想破坏的复合词时,但是您希望Text To Speech系统能够正确识别它时,您应该使用“Word Separator”字符。不要使用“Zero Width Non Breaking Space”,因为它被用作BOM。

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


5
投票

以下库支持连字。它为您执行所有类型的文本对齐(左/右/中心/对齐)和连字符。并非所有语言都已添加,但可以根据需要添加。此库使用NO WEBVIEWS和SUPPORTS SPANNABLES并允许长文本。

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

ANDROID:2.2到5.X

建立

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);

5
投票

这是Android 6 Marshmallow的新功能。

尝试将此添加到TextView xml

android:hyphenationFrequency="none"

4
投票

Soft hyphen从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>

enter image description here

由于我的用例非常狭窄,我只在“verbunden”一词中使用了一个软连字符。 Unicode \ u00ad无效。


2
投票

这个问题很老,但只为我找到了最佳解决方案:

我不得不说我在Xamarin编程,因此代码在C#中,但是移植到java中应该不是问题。

我使用NHyphenator Logic(https://github.com/alkozko/NHyphenator)插入SoftHyphens(UTF8符号 - 0x00AD),因此Textview在正确的位置进行连字符。

为了获得其他语言的连字符,我使用了openoffice Dictionaries。例如我必须得到德语 - 瑞士语的连字符

http://extensions.openoffice.org/en/search?f[0]=field_project_tags%3A157 1.下载扩展程序2.使用winrar或其他内容解压缩3.复制hyph_xx_xx / hyph_xx_xx.dic文件4.将新语言添加到Hyphenator类

NHyphernator资源文件声明为:hyph-xx-xx.pat.txt - >没有注释的dic文件的内容hyph-xx-xx.hyp.txt - >包含单词异常的文件,其中提交的逻辑确实如此没有给出正确的结果

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

编辑:

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

编辑:

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


-2
投票

如果setEllipsize错误尚未解决,this可能会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.