背景
TextView 总是遇到 RTL(从右到左)语言的问题。由于我只知道如何阅读希伯来语(除了英语),我将谈谈它的问题:
文本对齐(我不是在谈论重力)。作为一种 RTL 语言,希伯来语将单词从右到左排列(与英语相反)。
为了演示它有多烦人,想象一下,而不是显示“Hello world”。你通常会得到 ".Hello world" 。如果您将它放在一个句子中,这可以很容易地解决,但是当有多个标点符号时就更难了。
元音位置。希伯来语不需要元音来阅读文本,但有时没有它们很难阅读(尤其是圣经)。对于元音,希伯来语有所谓的“NIKUD”,实际上就像字母中的点。Android 中的问题是它们通常被放置在错误的位置。
为了演示它有多烦人,想象一下,而不是显示“Hello world”。你通常会得到 ".eHlol owrld" 。即使您尝试修复它(将元音始终放在当前字符后一个字符),字母中的位置也不正确(想象“Hello”中的“e”会像“H”一样,因为例子) 。
仅在 4.2 版(阅读此处,在“Native RTL support”下),Google 已修复所有与希伯来语相关的问题(或至少看起来如此)。
问题
希伯来语的问题导致每个以色列运营商和每个定制 ROM 制造商都有自己的解决方案来解决不同的问题,这使得在 4.2 之前的设备上处理 RTL 文本几乎是不可能的。
如果文本同时包含希伯来语和英语字母,事情会变得更加令人沮丧。
我试过的
我已经阅读了许多谈论这些问题的网站,并且我尝试了许多解决方案的变体,但没有一个解决了所有设备上的问题:
有人建议将字符 '\u200F'(或 '\u202D')放在文本的结尾/开头/两者。
有些人建议使用Html.fromHtml()方法并在那里放一些特别的东西。
有些人甚至建议改用 WebView (并且可能使用WebSettings.setDefaultTextEncodingName())。
问题
这个问题有明确的解决方案吗?
我认为最好的事情是因为 Android 4.2 解决了这个问题,而且 Android 是开源的,我们应该将它的 TextView 导入我们可以使用的库中,但谷歌还没有提供这样的库。