У меня есть EditText, в котором я хочу отображать валюту:
input.setInputType(InputType.TYPE_CLASS_NUMBER);
input.addTextChangedListener(new CurrencyTextWatcher());
с:
public class CurrencyTextWatcher implements TextWatcher {
boolean mEditing;
public CurrencyTextWatcher() {
mEditing = false;
}
public synchronized void afterTextChanged(Editable s) {
if(!mEditing) {
mEditing = true;
String digits = s.toString().replaceAll("\\D", "");
NumberFormat nf = NumberFormat.getCurrencyInstance();
try{
String formatted = nf.format(Double.parseDouble(digits)/100);
s.replace(0, s.length(), formatted);
} catch (NumberFormatException nfe) {
s.clear();
}
mEditing = false;
}
}
Я хочу, чтобы пользователь мог видеть только номерную клавиатуру, поэтому я называю
input.setInputType(InputType.TYPE_CLASS_NUMBER);
в моем EditText. Однако это не работает. Я вижу цифры как введенные без форматирования. НО: Если я НЕ устанавливаю inputType через input.setInputType(InputType.TYPE_CLASS_NUMBER), форматирование работает отлично. Но пользователь должен использовать обычную клавиатуру, что не очень приятно. Как я могу использовать цифровую клавиатуру, а также видеть правильное форматирование валюты в моем EditText? Спасибо.