如何防止希伯来语和阿拉伯语的自动从右到左文本方向?
How to prevent automatic right-to-left text direction for Hebrew and Arabic?
在 TextView 中,当文本以希伯来字母开头时,整个文本以 RTL 模式显示。
问题是在我的例子中只有第一个单词是希伯来语,而整个句子是英语,所以
דני went to school
用户看到
went to school דני
(第一个词在句末,英文阅读时)
如何防止这种情况发生并强制文本从左侧开始?
Unicode 字符本质上是 LTR 或 RTL。在大多数情况下,整个文本的方向都是从第一个字符开始的。希伯来字符为 RTL。
见http://en.wikipedia.org/wiki/Bi-directional_text
您的文本以 RTL 字符开头,因此被视为 RTL。您可以使用 left-to-right mark
、"\u200E"
.
强制将其视为 LTR
以这个特殊字符开始您的文本将告诉布局系统整个文本的明确方向。不过,RTL 部分仍将被视为这样,因为字符是明确的 RTL。
例如,数字不是很强的指示符,因此不会影响它们所在部分的方向。因此,不同方向部分之间的数字可能是个问题,可能需要明确指示.
作为替代方案,您可以使用 android:textDirection="locale"
,因此对于具有 LTR 语言环境的设备,任何具有 RTL 字符的字符串都将正确显示。
在 TextView 中,当文本以希伯来字母开头时,整个文本以 RTL 模式显示。
问题是在我的例子中只有第一个单词是希伯来语,而整个句子是英语,所以
דני went to school
用户看到
went to school דני
(第一个词在句末,英文阅读时)
如何防止这种情况发生并强制文本从左侧开始?
Unicode 字符本质上是 LTR 或 RTL。在大多数情况下,整个文本的方向都是从第一个字符开始的。希伯来字符为 RTL。
见http://en.wikipedia.org/wiki/Bi-directional_text
您的文本以 RTL 字符开头,因此被视为 RTL。您可以使用 left-to-right mark
、"\u200E"
.
以这个特殊字符开始您的文本将告诉布局系统整个文本的明确方向。不过,RTL 部分仍将被视为这样,因为字符是明确的 RTL。
例如,数字不是很强的指示符,因此不会影响它们所在部分的方向。因此,不同方向部分之间的数字可能是个问题,可能需要明确指示.
作为替代方案,您可以使用 android:textDirection="locale"
,因此对于具有 LTR 语言环境的设备,任何具有 RTL 字符的字符串都将正确显示。