Android:强制使用小数文本中的点而不是逗号
我怎样才能强制使用小数文本中的点而不是逗号 String.replace(“,”,“)对我来说不是有效的解决方案 我想用编程的方式设置US语言环境,但它也改变了语言Android:强制使用小数文本中的点而不是逗号,android,android-edittext,keyboard,locale,Android,Android Edittext,Keyboard,Locale,我怎样才能强制使用小数文本中的点而不是逗号 String.replace(“,”,“)对我来说不是有效的解决方案 我想用编程的方式设置US语言环境,但它也改变了语言 有没有一种方法可以在不更改语言的情况下更改区域设置?对于不同的区域设置,可以使用以下方法 private void localeDecimalInput(final EditText editText){ DecimalFormat decFormat = (DecimalFormat) DecimalFormat.get
有没有一种方法可以在不更改语言的情况下更改区域设置?对于不同的区域设置,可以使用以下方法
private void localeDecimalInput(final EditText editText){
DecimalFormat decFormat = (DecimalFormat) DecimalFormat.getInstance(Locale.getDefault());
DecimalFormatSymbols symbols=decFormat.getDecimalFormatSymbols();
final String defaultSeperator=Character.toString(symbols.getDecimalSeparator());
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable editable) {
if(editable.toString().contains(defaultSeperator))
editText.setKeyListener(DigitsKeyListener.getInstance("0123456789"));
else
editText.setKeyListener(DigitsKeyListener.getInstance("0123456789" + defaultSeperator));
}
});
}
或解决方案2
将EditText
与android:inputType=“numberDecimal”
和android:digits=“0123456789.,”
一起使用
然后将TextChangedListener
添加到EditText
中,并使用以下postertextchanged
:
public void afterTextChanged(Editable s) {
double doubleValue = 0;
if (s != null) {
try {
doubleValue = Double.parseDouble(s.toString().replace(',', '.'));
} catch (NumberFormatException e) {
//Error
}
}
//Do something with doubleValue
}