我们有一个使用英语(美国)文化的应用程序,现在我们正在尝试支持阿拉伯语语言环境。
我们在应用程序中使用Edittext inputType作为numberDecimal。但它打开键盘与英文数字而不是阿拉伯数字键盘。如何在代码后面以编程方式配置它?
注意:将Edittext inputType设置为" textMultiLine" ,它默认打开阿拉伯语键盘。但是当为EditText设置numberDecimal时,它会打开US Culture number键盘。
如何在键入编辑文本时使用键盘将数字格式分隔符点(&#39;。&#39;)更改为逗号(&#39;,&#39;)为阿拉伯语区域设置?< / p>
注意:我们的设备支持阿拉伯语区域设置。
答案 0 :(得分:0)
1)你不能。键盘是一个单独的应用程序,它只能决定显示什么。如果它不支持阿拉伯数字,那么它将不会显示它们。我不知道是否有任何一个主要的键盘实际上支持这一点,2年前当我在一个键盘上工作时,没有人能够支持它。
2)您可以从DecimalFormatSymbols http://developer.android.com/reference/java/text/DecimalFormatSymbols.html获取系统对语言环境的了解。如果手机没有安装阿拉伯语语言环境,则可能没有正确的值。在这种情况下,您必须使用它或在所有数字上滚动自己的格式。
答案 1 :(得分:0)
要使用阿拉伯数字和阿拉伯字体,请尝试使用TypeFace。 首先复制阿拉伯语.TTF字体,其中包含阿拉伯数字到&#34; assets / fonts&#34; 。
然后在您的活动中设置阿拉伯语字体
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Typeface tf= Typeface.createFromAsset(getAssets(), "fonts/FONT.TTF");
EditText et = (EditText)findViewById(R.id.edittext);
et.setTypeface(tf);
}
对于小数点分隔符
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Typeface tf= Typeface.createFromAsset(getAssets(), "fonts/FONT.TTF");
EditText et = (EditText)findViewById(R.id.edittext);
et.setTypeface(tf);
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
double dbl = 0;
String txt;
if (s != null) {
try {
dbl = Double.parseDouble(s.toString().replace(',', '.'));
} catch (NumberFormatException e) {
//Error
}
txt = String.valueOf(dbl);
et.setText(txt, TextView.BufferType.EDITABLE);
}
}
});
}
并添加
android:inputType="numberDecimal"
android:digits="0123456789.,"
到您的EditText布局