EditText輸入自動空格

Horacio77N 8年前發布 | 631 次閱讀 Java Java ,企業網站

package cn.juzhong.util;

import android.text.Editable; import android.text.Selection; import android.text.TextWatcher; import android.widget.EditText;

public class EditTextUtil implements TextWatcher{     private int beforeTextLength = 0; //輸入前的長度     private int onTextLength = 0; //文字的長度     private boolean isChanged = false;      private int location = 0;//記錄光標的位置     private char[] tempChar;      private StringBuffer buffer = new StringBuffer();      private int blankNumber = 0;       private EditText editText;          public EditTextUtil(EditText text){         editText = text;     }

    @Override     public void afterTextChanged(Editable arg0) {         // TODO Auto-generated method stub         if(isChanged){             location = editText.getSelectionEnd();             int index = 0;             while (index < buffer.length()) {                 if (buffer.charAt(index) == ' ') {                     buffer.deleteCharAt(index);                 } else {                     index++;                 }             }

            index = 0;             int konggeNumberC = 0;             while (index < buffer.length()) {                 if ((index == 4 || index == 9 || index == 14 || index == 19)) {                     buffer.insert(index, ' ');                     konggeNumberC++;                 }                 index++;             }

            if (konggeNumberC > blankNumber) {                 location += (konggeNumberC - blankNumber);             }

            tempChar = new char[buffer.length()];             buffer.getChars(0, buffer.length(), tempChar, 0);             String str = buffer.toString();             if (location > str.length()) {                 location = str.length();             } else if (location < 0) {                 location = 0;             }

            editText.setText(str);             Editable etable = editText.getText();             Selection.setSelection(etable, location);             isChanged = false;         }     }

    @Override     public void beforeTextChanged(CharSequence text, int arg1, int arg2,             int arg3) {         // TODO Auto-generated method stub         beforeTextLength = text.length();         if(buffer.length() > 0){             buffer.delete(0, buffer.length());         }                  blankNumber = 0;         for(int i = 0;i < text.length();i ++){             if(text.charAt(i) == ' '){                 blankNumber ++;             }         }     }

    @Override     public void onTextChanged(CharSequence text, int arg1, int arg2, int arg3) {         // TODO Auto-generated method stub         onTextLength = text.length();         buffer.append(text.toString());         if(onTextLength == beforeTextLength || onTextLength <= 3                 || isChanged){             isChanged = false;             return;         }                  isChanged = true;     }

}</pre>

    在代碼中調用

bankNumberEditText.addTextChangedListener(new EditTextUtil(bankNumberEditText));


 本文由用戶 Horacio77N 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!