我想在Edittext
中输入第一个非空字符或删除最后一个非空字符时执行方法。我想我必须使用TextWatcher
但不确定逻辑。
答案 0 :(得分:2)
对Edittext使用addTextChangedListener
并检测以charSequence.length() > 0
条件插入的第一个字符!
<YOUR_EDITTEXT>.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
int length = charSequence.toString().trim().length();
if ((length == 1 && (i == 0 && i1 < i2)) || (length == 0 && (i == 0 && i2 < i1))) {
//Call your method....
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
答案 1 :(得分:1)
我想你想修剪你的EditText字符串。 trim函数删除开头和结尾的所有空格。
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2){
int length = charSequence.toString().trim().length();
if(length > 0){
// call your method
}
}
答案 2 :(得分:1)
是的,你是对的,你可以使用TextWatcher来做到这一点。
逻辑:声明一个变量来存储edittext中的最后一个值,比如说temp
@Override
public void onTextChanged(CharSequence s, int i, int i1, int i2) {
// when first non-empty character is entered
if(s.length()>temp.length() && s != ' ' && temp.length()==0) {
//Call your method
}
// when last non-empty character is deleted
if(s.length()<temp.length() && s!=' ' && temp.length()==1){
//Call your method
}
}
还在temp变量中保存新值。希望它会有所帮助。