Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改android数字区域设置_Java_Android_Locale - Fatal编程技术网

Java 更改android数字区域设置

Java 更改android数字区域设置,java,android,locale,Java,Android,Locale,我成功地将多个区域设置添加到我的应用程序中,并找到了如何在它们之间切换的方法,但问题是在切换区域设置后,除了数字以外,其他一切都正常工作 例如,如果我切换到波斯语数字将保持123,这是错误的,应该切换到١٣ 我不能使用String.format(number),因为我的大多数数字都包含在字符串中。这里有人能帮我吗?如果您想翻译数字,您不能将其绑定为字符串,必须将其设置为float或int <string name="numberRes">%d</string

我成功地将多个区域设置添加到我的应用程序中,并找到了如何在它们之间切换的方法,但问题是在切换区域设置后,除了数字以外,其他一切都正常工作

例如,如果我切换到波斯语数字将保持123,这是错误的,应该切换到١٣


我不能使用
String.format(number)
,因为我的大多数数字都包含在字符串中。这里有人能帮我吗?

如果您想翻译数字,您不能将其绑定为字符串,必须将其设置为float或int

<string name="numberRes">%d</string>
textview.setText(String.format(R.string.numberRes,numberValue))

如果字符串的数字格式错误,请小心数字格式异常

我找到的最佳解决方案是在波斯语/阿拉伯语地区强制使用数字字体! 您必须创建多个
font.xml
文件,并将其放入
res/font
中,然后使用基于区域设置的
主题
将相关字体分配给
android:fontFamily
。 结果如下:

font/font-en.xml
font/font-ar.xml
font/font-fa.xml
values-en/themes.xml
values-ar/themes.xml
values-fa/themes.xml

正如我所说,我的大多数数字都是来自服务器或用户输入电话号码/生日之类的字符串。然后我建议检查区域设置,如果是波斯语,则使用正则表达式提取/替换它们。类似于
string.replace('1','?')。replace('2','?'))
font/font-en.xml
font/font-ar.xml
font/font-fa.xml
values-en/themes.xml
values-ar/themes.xml
values-fa/themes.xml