Android銀行卡輸入格式化程式

來源:互聯網
上載者:User


我們在輸入銀行卡號時希望能按格式顯示,而不是單純顯示一堆數字,下面一段代碼可實現銀行卡號格式化輸入。

//銀行卡號碼的格式
   public void bankCardNumAddSpace(final EditText mEditText) {
       mEditText.addTextChangedListener(new TextWatcher() {
           int beforeTextLength = 0;
           int onTextLength = 0;
           boolean isChanged = false;
 
           int location = 0;// 記錄游標的位置
           private char[] tempChar;
           private StringBuffer buffer = new StringBuffer();
           int konggeNumberB = 0;
 
           @Override
           public void beforeTextChanged(CharSequence s, int start, int count,
                                         int after) {
               beforeTextLength = s.length();
               if (buffer.length() > 0) {
                   buffer.delete(0, buffer.length());
               }
               konggeNumberB = 0;
               for (int i = 0; i < s.length(); i++) {
                   if (s.charAt(i) == ' ') {
                       konggeNumberB++;
                   }
               }
           }
 
           @Override
           public void onTextChanged(CharSequence s, int start, int before,
                                     int count) {
               onTextLength = s.length();
               buffer.append(s.toString());
               if (onTextLength == beforeTextLength || onTextLength <= 3
                       || isChanged) {
                   isChanged = false;
                   return;
               }
               isChanged = true;
           }
 
           @Override
           public void afterTextChanged(Editable s) {
               if (isChanged) {
                   location = mEditText.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 > konggeNumberB) {
                       location += (konggeNumberC - konggeNumberB);
                   }
 
                   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;
                   }
 
                   mEditText.setText(str);
                   Editable etable = mEditText.getText();
                   Selection.setSelection(etable, location);
                   isChanged = false;
               }
           }
       });
   }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.