私はTextWatcherでEditTextを持っています。テキストを人間の身長(5'9 ")のようにフォーマットすることになっていますが、ユーザがミスをして誤った文字を削除したい場合、TextWatherはそれを許可しません。 TextWatherはすぐにその背中を追加します。以下はコードです。では、EditTextでテキストを削除する方法を教えてください。TextWatcherで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());
}
}
ありがとうStefan。問題を修正しました。コードをafterTextChanged()メソッドに移動し、キーステータスを確認するためにブール値を使用しました。出来た。ありがとうございました。 –
何らかの理由で、ユーザーが間違いを修正した後にユーザーが入力しようとすると、TextWatcherが機能しません。 –
OnKeyListenerはSamsung Galaxyでは動作しませんが、Motorola Xoomでは正常に動作します –