由于某些未知原因,如果我输入以下字符串:
15 קמ
在文本视图中,它会在“15”和“קמ”之间产生一个新行:
15
קמ
如果我用“km”替换“קמ”,那么它可以正常工作......
注意:如果两个字符串的部分都是希伯来语,则不会发生这种情况。
任何线索?
答案 0 :(得分:2)
我认为希伯来语被解释为RTL(从右到左),而另一部分是LTR(从左到右)。鉴于此,TextView必须代表如下:
\LTR 15 \RTL קמ
我的逻辑猜测是TextView将RTL部分放在一个新行上,以处理将两个部分放在同一行上的无意义。如果你在语言环境是希伯来语的时候一直强制RTL,我认为它会调节渲染并解决问题。我建议你尝试在字符串的开头添加“RIGHT-TO-LEFT MARK”字符\u200F
:
String text="15 קמ";
if (hebrew) {
text="\u200F"+text;
}
此外,似乎有些字体显示特殊字符的图形解释(虽然它不应该)。您可能需要使用此font来摆脱它。
答案 1 :(得分:1)
当我在同一文本视图中使用字母数字+阿拉伯语文本时,我也遇到了TextView对齐问题,他们将按从左到右的顺序重新排列所有文本,这会产生荒谬的输出。这种语言问题并不是我们可以直接解决的问题。
我们所做的是将文本分离为更多文本视图(如果适用),在您的情况下,我建议将值和希伯来文本分离为单独的TextView。
答案 2 :(得分:0)
尝试对希伯来语文本使用UTF-8编码,例如:
String text =“15קמ”;
text = new String(text.getBytes(),“UTF-8”);
答案 3 :(得分: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" />