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