Frage

Wie kann ich geben Sie nur Alphabete in EditText in Android?

War es hilfreich?

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

Versuchen Sie, diese

<EditText
  android:id="@+id/EditText1"
  android:text=""
  android:inputType="text|textNoSuggestions"
  android:textSize="18sp"
  android:layout_width="80dp"
  android:layout_height="43dp">
</EditText>

Andere input gefunden werden kann Hier ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top