3

出于某种未知原因,如果我输入以下字符串:

15 קמ

在文本视图中,它会在“15”和“קמ”之间产生一个新行:

15
קמ

如果我用“km”替换“קמ”,那么它工作正常......

注意:如果字符串的两个部分都是希伯来语,则不会发生这种情况。

有什么线索吗?

4

4 回答 4

3

我认为希伯来语被解释为 RTL(从右到左),而另一部分是 LTR(从左到右)。鉴于此,TextView 必须表示如下:

\LTR 15 \RTL קמ

我的逻辑猜测是 TextView 将 RTL 部分放在一个新行上,以处理将两个部分放在同一行上的废话。如果你在语言环境是希伯来语时强制它一直 RTL,我认为它会规范渲染并解决问题。我建议您尝试\u200F在字符串的开头添加“RIGHT-TO-LEFT MARK”字符:

String text="15 קמ";
if (hebrew) {
    text="\u200F"+text;
}

此外,似乎某些字体显示了特殊字符的图形解释(虽然它不应该)。您可能需要使用此字体来摆脱它。

于 2013-06-26T08:43:41.330 回答
1

当我在同一文本视图中处理字母数字 + 阿拉伯文本时,我也遇到过 TextView 对齐问题,它们会以从左到右的顺序重新对齐所有文本,从而导致荒谬的输出。这种语言问题并不是我们可以直接解决的问题。

我们所做的是将文本分离到更多文本视图(如果适用),在您的情况下,我建议将值和希伯来语文本分离到单独的 TextView 中。

于 2013-06-22T15:16:35.033 回答
0

如果您的 textview 可以放在一行中,我想我可能有一个解决方案。这是成功的 xml 布局。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ellipsize="none"
    android:text="15 קמ"
    android:maxLines="1"
    android:padding="8dp"
    android:singleLine="true" />
于 2013-06-26T06:50:50.057 回答
0

尝试对希伯来文文本使用 UTF-8 编码,例如:

字符串文本 = "15 קמ";
text = new String(text.getBytes(), "UTF-8");

于 2013-06-25T18:29:40.227 回答