如何强制使用点代替十进制EditText的逗号?
String.replace(“,”,“。”)对我来说不是有效的解决方案。
我虽然通过编程方式设置了美国区域设置,但是它也改变了语言。
是否可以在不更改语言的情况下更改语言环境?
答案 0 :(得分:1)
您可以将以下内容用于不同的语言环境
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
中,并添加以下afterTextChanged
:
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
}