Android EditTextデジタルオートスペース表示を追加
3739 ワード
初めてブログを书きましたが、皆さんにご理解をお愿いします.
需要一:EditTextは出荷コード券コードを入力して4ビット分割を行い、削除過程でも自動的に4ビット分割を行う.主に論理です.
EditTextにTextWatcherメソッドを追加し、onTextChangedでスペースロジックの追加を制御します.
需要一:EditTextは出荷コード券コードを入力して4ビット分割を行い、削除過程でも自動的に4ビット分割を行う.主に論理です.
EditTextにTextWatcherメソッドを追加し、onTextChangedでスペースロジックの追加を制御します.
mCodeEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s == null || s.length() == 0) return;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (i != 4 && i!= 9 && i != 14 && s.charAt(i) == ' ') {
continue;
} else {
sb.append(s.charAt(i));
if ((sb.length() == 5 || sb.length() == 10|| sb.length() == 15) && sb.charAt(sb.length() - 1) != ' ') {
sb.insert(sb.length() - 1, ' ');
}
}
}
if (!sb.toString().equals(s.toString())) {
int index = start + 1;
if (sb.charAt(start) == ' ') {
if (before == 0) {
index++;
} else {
mCodeEditText.setText(sb.subSequence(0, sb.length() - 1));
index--;
}
} else {
if (before == 1) {
index--;
}
}
mCodeEditText.setText(sb.toString());
mCodeEditText.setSelection(index);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
TextWatcher :
mCodeEditText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // s , start count , s 。 // start // count // after LogUtil.i(TAG, "beforeTextChanged s="+s.toString()); LogUtil.i(TAG, "beforeTextChanged start="+start); LogUtil.i(TAG, "beforeTextChanged after="+after); LogUtil.i(TAG, "beforeTextChanged count="+count); } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // s , start count , s 。 before 。 //start //before //int count LogUtil.i(TAG, "onTextChanged s="+s.toString()); LogUtil.i(TAG, "onTextChanged start="+start); LogUtil.i(TAG, "onTextChanged before="+before); LogUtil.i(TAG, "onTextChanged count="+count); } @Override public void afterTextChanged(Editable s) {// LogUtil.i(TAG, "afterTextChanged s="+s.toString()); } });