簡體   English   中英

Android的EDITTEXT - 檢測時,第一個非空輸入的字符(也是最后一次刪除)

[英]Android Edittext - detect when first non-empty character entered (and last deleted)

我只想在Edittext輸入第一個非空字符或刪除最后一個非空字符執行一種方法。 我想我必須使用TextWatcher但不確定邏輯。

addTextChangedListener用於Edittext並檢測使用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) {
            }
        });

我認為您想修剪EditText字符串。 修剪功能刪除開頭和結尾的所有空白。

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2){                           
     int length = charSequence.toString().trim().length();
     if(length > 0){
         // call your method
     }
}

是的,您是對的,您可以使用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變量中。 希望它會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM