TextWatcherを使用したEditTextがあります。テキストを5'9"のような人間の身長にフォーマットすることになっています。しかし、ユーザーが間違えて入力ミスのある文字を削除したい場合、TextWatherはそれを許可しません。たとえば、ユーザーが「文字」を削除したいとします。 TextWatherはすぐにその背中を追加します。以下はコードです。では、ユーザーがEditTextのテキストを削除できるようにするにはどうすればよいですか?
private class CustomTextWatcher implements TextWatcher {
private EditText mEditText;
public CustomTextWatcher(EditText e) {
mEditText = e;
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
public void afterTextChanged(Editable s) {
int count = s.length();
String str = s.toString();
if (count == 1) {
str = str + "'";
} else if (count == 3) {
str = str + "\"";
} else if ((count > 4) && (str.charAt(str.length() - 1) != '\"')) {
str = str.substring(0, str.length() - 2)
+ str.charAt(str.length() - 1) + "\"";
} else {
return;
}
mEditText.setText(str);
mEditText.setSelection(mEditText.getText().length());
}
}