webentwicklung-frage-antwort-db.com.de

So erstellen Sie EditText akzeptiert Alphabete nur in Android?

Wie kann ich in EditText in Android nur Alphabete eingeben?

49
UMAR
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,";

                }
21
UMAR

Fügen Sie diese Zeile mit Ihrem EditText-Tag hinzu.

Android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

Ihr EditText-Tag sollte folgendermaßen aussehen:

<EditText
        Android:id="@+id/editText1"
        Android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content" />
143
Sandeep
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 aber gründlich testen!

53
Subhas

Durch XML können Sie einfach folgenden Code in XML (editText) eingeben ...

Android:digits="abcdefghijklmnopqrstuvwxyz"

nur Zeichen werden akzeptiert ...

18
Naveed Ashraf

Für diejenigen, die möchten, dass ihr editText nur Alphabete und Leerzeichen (weder Ziffern noch Sonderzeichen) akzeptiert, kann diese InputFilter..__ verwendet werden. Hier habe ich eine Methode namens getEditTextFilter() erstellt und den Eingabefilter darin 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 inputFilter wie folgt an Ihren editText an, nachdem Sie ihn gefunden haben:

mEditText.setFilters(new InputFilter[]{getEditTextFilter()});

Der ursprüngliche Kredit geht an @UMAR, der die Idee der Überprüfung mit regulären Ausdrücken und @KamilSeweryn gegeben hat

17
swetabh suman

Fügen Sie die Code-Edittext-XML-Datei ein.

   Android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
5
Najib Puthawala

Erlaube 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}); 
5
Umar Waqas

Für Leerzeichen können Sie den Ziffern ein einzelnes Leerzeichen hinzufügen. Wenn Sie Sonderzeichen wie Punkt oder Komma benötigen, können Sie auch diese Liste verwenden

Android: Digits = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

3
Naveen Kumar M

Versuche dies

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

Anderer inputType kann gefunden werden Hier ..

1

Wenn noch jemand dies wünscht, Java-Regex für die Unterstützung von Unicode? ist ein guter. Es ist für, wenn Sie NUR Buchstaben (egal welche Kodierung - japanisch, Schwedisch) neben EditText haben möchten. Später können Sie es mit Matcher und Pattern.compile() überprüfen. 

0
mdzeko