1.阿拉伯语+数字
问题描述:在同一个textview中显示阿拉伯语和数字时,阿拉伯语总是在后面,数字总是在前面,如:金额+货币
解决方案:
1,将阿拉伯语与数字拆分成两个textview显示,
优势:可自由控制显示内容,不会因为阿拉伯语而造成系统强制排序。
劣势:两个textview增加代码工作量,不利于后期维护与扩展。
2,设置textview的textDirection属性,但是如果在布局中设置”android:textDirection=”ltr”“并不起作用,需要在代码中对字符串进行格式化,如下:
BidiFormatter.getInstance().unicodeWrap(text, TextDirectionHeuristics.LTR);
这种方案只需要一个textview即可显示左到右的文本
2.金额转换
问题描述:涉及金额时需要格式化为0,000.00等格式时,需要用到 DecimalFormat 类进行格式化,但是在应用设置为阿拉伯语后,格式化之后的数字为阿拉伯语的数字格式,如
۰ 0
۱ 1
۲ 2
۳ 3
۴ 4
۵ 5
۶ 6
۷ 7
۸ 8
۹ 9
但是一般都需要按通用数字显示。
解决方案:设置转换时的符号类型为英语:
DecimalFormat df = new DecimalFormat("###,##0.00");
df.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.ENGLISH));