Я хотел бы постоянно отображать ввод полей EditText с двумя десятичными знаками. Поэтому, когда пользователь вводит 5, он покажет 5.00 или когда пользователь войдет в 7.5, он покажет 7.50.
Кроме того, я хотел бы также показать нуль, когда поле пусто, а не ничего.
У меня уже есть параметр ввода:
android:inputType="number|numberDecimal"/>
Должен ли я работать с inputfilters здесь?
Извините, я до сих пор совершенно новичок в android/java...
Спасибо за вашу помощь!
Редактировать 2011-07-09 23.35 - Решенная часть 1 из 2: "" до 0,00.
С ответом nickfox я смог решить половину моего вопроса.
et.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.toString().matches(""))
{
et.setText("0.00");
Selection.setSelection(et.getText(), 0, 4);
}
}
});
Я все еще работаю над решением для другой половины моего вопроса. Если я найду решение, я отправлю его здесь тоже.
Редактировать 2011-07-09 23.35 - Решенная часть 2 из 2: изменение ввода пользователя на число с двумя десятичными знаками.
OnFocusChangeListener FocusChanged = new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
String userInput = et.getText().toString();
int dotPos = -1;
for (int i = 0; i < userInput.length(); i++) {
char c = userInput.charAt(i);
if (c == '.') {
dotPos = i;
}
}
if (dotPos == -1){
et.setText(userInput + ".00");
} else {
if ( userInput.length() - dotPos == 1 ) {
et.setText(userInput + "00");
} else if ( userInput.length() - dotPos == 2 ) {
et.setText(userInput + "0");
}
}
}
}