Android EditText 银行卡四位空一格

import android.os.Bundle;import android.app.Activity;import android.text.Editable;import android.text.Selection;import android.text.TextWatcher;import android.widget.EditText;public class EditTextInputActivity extends Activity {private EditText et_input;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_edit_text_input);et_input = (EditText) this.findViewById(R.id.et_input);// bankCardNumAddSpace(et_input);et_input.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;@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {// TODO Auto-generated method stubonTextLength = s.length();buffer.append(s.toString());if (onTextLength == beforeTextLength || onTextLength <= 3 || isChanged) {isChanged = false;return;}isChanged = true;}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {// TODO Auto-generated method stubbeforeTextLength = 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++;}}}@Overridepublic void afterTextChanged(Editable s) {// TODO Auto-generated method stubif (isChanged) {location = et_input.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 % 5 == 4 ) {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;}et_input.setText(str);Editable etable = et_input.getText();Selection.setSelection(etable, location);isChanged = false;}}});}}

版权声明:本文为博主原创文章,未经博主允许不得转载。

,如果说,罗马是一座厚重和凝固的堡垒,

Android EditText 银行卡四位空一格

相关文章:

你感兴趣的文章:

标签云: