在RTL格式化时,TextView
内的数字会反转。
当数字位于TextView
内的文本末尾时,它们会在开始时被重新启动并进行应用。怎么解决?
答案 0 :(得分:1)
误解: RTL语言中的数字(如ARABIC)应从RTL写入阿拉伯数字,以避免出现任何问题,例如:“تمإرسالرسالةنصيةللرقم١٢٣٤”注意,我写的是“رسالةنصية”而不是“ SMSرسالة”。
问题及其解决方案: Mixing more than one direction languages需要更多步骤,您需要告诉系统“嘿,这是RTL字,将其添加到序列中”。 So you may need to do this implicitly,即:
\u200f + تم إرسال رسالة نصية إلى + number
考虑StringBuilder:对于开发人员来说,使用 plus (+)表示法为RTL语言开发某些东西是非常痛苦的,这很容易混淆并且容易出错。
更好的方法:
builder.append("\u061C").append(" تم إرسال رسالة نصية لـ").append("\u200E").append("+0123456789")
Consider BidiFormatter:实用程序类,用于格式化文本,以便在可能具有相反方向的上下文中显示而不会造成任何干扰
示例:
String text = "{0} تم إرسال رسالة نصية لـ ";
String phone = BidiFormatter.getInstance().unicodeWrap("+961 01 234 567");
String result = MessageFormat.format(text,phone);
现在,result
的格式正确了。
答案 1 :(得分:1)
如果要防止以RTL格式格式化时TextView的数字反转,只需为XML文件中的特定TextView指定android:textDirection="ltr"
属性。它将以通常的顺序显示数字。
答案 2 :(得分:0)
将textview gravity设置为开始
android:gravity="start"
答案 3 :(得分:0)
尝试一下
清单文件中的android:supportsRtl =“ false”
在布局中和android:gravity =“ start”。