So erstellen EditText Alphabete akzeptiert nur in Android?
-
23-09-2019 - |
Frage
Wie kann ich geben Sie nur Alphabete in EditText in Android?
Lösung 3
EditText state = (EditText) findViewById(R.id.txtState);
Pattern ps = Pattern.compile("^[a-zA-Z ]+$");
Matcher ms = ps.matcher(state.getText().toString());
boolean bs = ms.matches();
if (bs == false) {
if (ErrorMessage.contains("invalid"))
ErrorMessage = ErrorMessage + "state,";
else
ErrorMessage = ErrorMessage + "invalid state,";
}
Andere Tipps
Fügen Sie diese Zeile mit Ihrem EditText-Tag.
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
Ihr EditText Tag soll wie folgt aussehen:
<EditText
android:id="@+id/editText1"
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
edittext.setFilters(new InputFilter[] {
new InputFilter() {
public CharSequence filter(CharSequence src, int start,
int end, Spanned dst, int dstart, int dend) {
if(src.equals("")){ // for backspace
return src;
}
if(src.toString().matches("[a-zA-Z ]+")){
return src;
}
return "";
}
}
});
Bitte Test gründlich aber!
Für diejenigen, die wollen, dass ihre editText akzeptieren sollte nur Buchstaben und Leerzeichen (weder Numerik noch keine Sonderzeichen), dann kann man diese InputFilter
verwenden.
Hier habe ich eine Methode namens getEditTextFilter()
erstellt und die Eingangsfilter innen geschrieben.
public static InputFilter getEditTextFilter() {
return new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
boolean keepOriginal = true;
StringBuilder sb = new StringBuilder(end - start);
for (int i = start; i < end; i++) {
char c = source.charAt(i);
if (isCharAllowed(c)) // put your condition here
sb.append(c);
else
keepOriginal = false;
}
if (keepOriginal)
return null;
else {
if (source instanceof Spanned) {
SpannableString sp = new SpannableString(sb);
TextUtils.copySpansFrom((Spanned) source, start, sb.length(), null, sp, 0);
return sp;
} else {
return sb;
}
}
}
private boolean isCharAllowed(char c) {
Pattern ps = Pattern.compile("^[a-zA-Z ]+$");
Matcher ms = ps.matcher(String.valueOf(c));
return ms.matches();
}
};
}
Fügen Sie diesen Eingangsfilter auf Ihre editText, nachdem es zu finden, wie folgt aus:
mEditText.setFilters(new InputFilter[]{getEditTextFilter()});
Der ursprüngliche Kredit geht an @UMAR, die die Idee der Validierung mit regulärem Ausdruck und @KamilSeweryn gab
Durch Xml Sie einfach als Typ folgenden Code in XML tun (editText) ...
android:digits="abcdefghijklmnopqrstuvwxyz"
nur Zeichen werden ... akzeptiert
Setzen Code EditText XML-Datei,
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
Erlauben Sie nur Alphabete in EditText android:
InputFilter letterFilter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
String filtered = "";
for (int i = start; i < end; i++) {
char character = source.charAt(i);
if (!Character.isWhitespace(character)&&Character.isLetter(character)) {
filtered += character;
}
}
return filtered;
}
};
editText.setFilters(new InputFilter[]{letterFilter});
Für Räume, können Sie Leerzeichen in den Ziffern hinzufügen. Wenn Sie keine Sonderzeichen wie der Punkt benötigen, ein Komma können Sie auch zu dieser Liste hinzufügen
Android: Ziffern = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
Wenn jemand noch diese will, Java Regex für die Unterstützung Unicode? ist ein guter. Es ist, wenn Sie nur Buchstaben wollen (egal welche Codierung - japaneese, sweedish) iside einem EditText. Später können Sie es Matcher
und Pattern.compile()
mit überprüfen