Android Edittext - 检测第一个非空字符输入(和最后删除)

时间:2016-06-21 11:06:15

标签: android android-edittext

我想在Edittext中输入第一个非空字符或删除最后一个非空字符时执行方法。我想我必须使用TextWatcher但不确定逻辑。

3 个答案:

答案 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变量中保存新值。希望它会有所帮助。