Android 数字和希伯来文文本会产生不需要的新行

Android 数字和希伯来文文本会产生不需要的新行,android,textview,hebrew,Android,Textview,Hebrew,出于未知原因,如果我放入以下字符串: 15 קמ 在文本视图中,它会在“15”和“קמ”之间产生一条新行: 如果我用“km”替换“קמ”,那么它可以正常工作 注意:如果字符串的两个部分都是希伯来语,则不会发生这种情况 有什么线索吗?当我在同一个文本视图中处理字母数字+阿拉伯文本时,我也遇到了文本视图对齐问题,它们将按从左到右的顺序重新对齐所有文本,从而产生荒谬的输出。这种语言问题并不是我们可以直接解决的 我们所做的是将文本分离为更多的文本视图(如果适用),在您的情况下,我建议将值和希伯来文文本

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

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

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

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


有什么线索吗?

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


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

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

字符串text=“15קמ”
text=新字符串(text.getBytes(),“UTF-8”)


如果您的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" />

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

\LTR 15 \RTL קמ
我的逻辑猜测是,TextView将RTL部分放在一个新的行上,以处理将两个部分放在同一行上的胡说八道。如果您在区域设置为希伯来语时一直强制使用RTL,我认为这将规范渲染并解决问题。我建议您尝试在字符串开头添加“从右到左标记”字符
\u200F

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

此外,一些字体似乎显示了对特殊字符的图形解释(而它不应该)。你可能需要使用这个来摆脱它。

Galaxy Nexus没有新行,请展示一些代码。当你看到这个时,你使用的API级别是什么?它是在真实的设备上还是在模拟器上?我使用API 10,但我也设法在API 15中重现了这个问题。它发生在真实设备(HTC One X)和模拟器上……是的,我也考虑过了……我真的希望有一个真正的解决方案,而不仅仅是一个解决办法……尽管它会起作用……@MukeshY你指的是shaylh吗?如果你是,我想你应该在他的问题上留下评论。
String text="15 קמ";
if (hebrew) {
    text="\u200F"+text;
}