Как использовать событие EditText onTextChanged, когда я нажимаю номер?
У меня есть EditText
с "text = 0.00"
. Когда я нажимаю номер 3, он должен быть как 0.03
а во второй раз, когда я нажимаю номер 5, текст должен быть 0.35
. И 35.0
, 35.09
как это. Первоначально EditText
имеет значение 0.00
.
Все это делается с помощью одного и того же EditText
.
Как мне это достичь? Я попытался использовать addTextChangedListener()
с TextWatcher()
.
Ответы
Ответ 1
Вы выбрали правильный подход. Вы должны расширить класс с помощью TextWatcher и переопределить afterTextChanged()
, beforeTextChanged()
, onTextChanged()
.
Вы должны написать нужную логику в методе afterTextChanged()
для достижения требуемой вами функциональности.
Ответ 2
Вы также можете попробовать следующее:
EditText searchTo = (EditText)findViewById(R.id.medittext);
searchTo.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
// 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 onTextChanged(CharSequence s, int start, int before, int count) {
doSomething();
}
});
Ответ 3
Здесь я написал нечто похожее на то, что вам нужно:
inputBoxNumberEt.setText(". ");
inputBoxNumberEt.setSelection(inputBoxNumberEt.getText().length());
inputBoxNumberEt.addTextChangedListener(new TextWatcher() {
boolean ignoreChange = false;
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
if (!ignoreChange) {
String string = s.toString();
string = string.replace(".", "");
string = string.replace(" ", "");
if (string.length() == 0)
string = ". ";
else if (string.length() == 1)
string = ". " + string;
else if (string.length() == 2)
string = "." + string;
else if (string.length() > 2)
string = string.substring(0, string.length() - 2) + "." + string.substring(string.length() - 2, string.length());
ignoreChange = true;
inputBoxNumberEt.setText(string);
inputBoxNumberEt.setSelection(inputBoxNumberEt.getText().length());
ignoreChange = false;
}
}
});