android edittext ontextchanged,我按下数字时如何使用EditText onTextChanged事件?
我按下数字时如何使用EditText onTextChanged事件?我有一个addTextChangedListener()和TextWatcher()。当我按数字3时,它应该像0.03,第二次按数字5时,文本应该是2961026798634664664963。35.0、35.09这样。 EditText的初始值为0.00。这些都是使用相同的addTextChangedListener()完成的
我按下数字时如何使用EditText onTextChanged事件?
我有一个addTextChangedListener()和TextWatcher()。当我按数字3时,它应该像0.03,第二次按数字5时,文本应该是2961026798634664664963。35.0、35.09这样。 EditText的初始值为0.00。
这些都是使用相同的addTextChangedListener()完成的。
我该如何实现? 我尝试将addTextChangedListener()与TextWatcher()结合使用。
4个解决方案
92 votes
您也可以尝试以下操作:
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();
}
});
Khawar Raza answered 2020-07-11T00:51:47Z
36 votes
您选择了正确的方法。 您必须使用TextWatcher扩展该类,并覆盖afterTextChanged(),beforeTextChanged()、onTextChanged()。
您必须使用afterTextChanged()方法编写所需的逻辑,才能实现所需的功能。
Roll no1 answered 2020-07-11T00:51:27Z
8 votes
在这里,我写了一些与你需要的东西类似的东西:
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;
}
}
});
M. Usman Khan answered 2020-07-11T00:52:07Z
1 votes
把逻辑放在
afterTextChanged(Editable s) {
string str = s.toString()
// use the string str
}
TextWatcher上的文档
Dan Alboteanu answered 2020-07-11T00:52:31Z
更多推荐
所有评论(0)