Wie man TextView beschränkt, um nur alphanumerische Zeichen in Android zuzulassen

Ich habe eine TextView in meiner App, die ich möchte, dass ein Benutzer nur alpha-numerische Zeichen eingeben kann. Wie kann das gemacht werden? Vielen Dank!

  • Android Erweiterung apk
  • Wie bekomme ich die Grundfarbe des Materialthemas in xml ziehbar?
  • Was ist der Standardübergang zwischen Aktivitäten in Android 4.0 (API 14+)
  • Wie bekomme ich kontinuierlich Frame-Daten von Camera2 API für Streaming-Zweck?
  • Stackoverflow: Verursacht durch verschachtelte Ansichten?
  • TextView in Listenansicht Zeilen mit wiederholten Werten auf Scroll in Android?
  • Ist GCM (jetzt FCM) frei für irgendeine Grenze?
  • Was ist Ihr Workflow zum Testen von Cloud Code auf Parse?
  • Ich bekomme diese fehler "deine cpu unterstützt nicht vt-x oder svm, android studio 2.1.1 in AMD 6300 Prozessor"
  • Android 5 Aktivitätsübergang auf unterer Api
  • Parallele AsyncTask laufen lassen
  • Phonegap (Android Build) - Zwischenbildschirm vor dem Splash Screen
  • 4 Solutions collect form web for “Wie man TextView beschränkt, um nur alphanumerische Zeichen in Android zuzulassen”

    In der XML, setzen Sie diese:

    android:digits="abcdefghijklmnopqrstuvwxyz1234567890 " 

    Hier ist eine bessere Lösung ……… https://groups.google.com/forum/?fromgroups=#!topic/android-developers/hS9Xj3zFwZA

     InputFilter filter = new InputFilter() { public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { for (int i = start; i < end; i++) { if (!Character.isLetterOrDigit(source.charAt(i))) { return ""; } } return null; } }; edit.setFilters(new InputFilter[]{filter}); 

    Die InputFilter Lösung funktioniert gut und gibt Ihnen die volle Kontrolle, um den Eingang auf eine feinere Korn-Ebene zu filtern, als android:digits . Die Methode filter() sollte null wenn alle Zeichen gültig sind oder eine CharSequence nur der gültigen Zeichen, wenn einige Zeichen ungültig sind. Wenn mehrere Zeichen kopiert und eingefügt werden und einige ungültig sind, sollten nur die gültigen Zeichen beibehalten werden (@ AchJs Lösung wird das gesamte Einfügen zurückweisen, wenn irgendwelche Zeichen ein ungültiges sind).

     public static class AlphaNumericInputFilter implements InputFilter { public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { // Only keep characters that are alphanumeric StringBuilder builder = new StringBuilder(); for (int i = start; i < end; i++) { char c = source.charAt(i); if (Character.isLetterOrDigit(c)) { builder.append(c); } } // If all characters are valid, return null, otherwise only return the filtered characters boolean allCharactersValid = (builder.length() == end - start); return allCharactersValid ? null : builder.toString(); } } 

    Auch wenn Sie Ihren InputFilter , müssen Sie InputFilter , dass Sie keine anderen InputFilters überschreiben, die auf Ihrem EditText . Diese könnten in XML gesetzt werden, wie android:maxLength . Sie müssen auch die Reihenfolge berücksichtigen, in der die InputFilters sind. Bei Verwendung in Verbindung mit einem Längenfilter sollte Ihr kundenspezifischer Filter vor dem Längenfilter eingefügt werden, so dass der eingefügte Text den benutzerdefinierten Filter vor dem Längenfilter anwendet (@ AchJs Lösung überschreibt alle anderen InputFilters und nur die benutzerdefinierte Anwendung).

      // Apply the filters to control the input (alphanumeric) ArrayList<InputFilter> curInputFilters = new ArrayList<InputFilter>(Arrays.asList(editText.getFilters())); curInputFilters.add(0, new AlphaNumericInputFilter()); InputFilter[] newInputFilters = curInputFilters.toArray(new InputFilter[curInputFilters.size()]); editText.setFilters(newInputFilters); 

    Das sollte funktionieren:

     textView.setInputType(InputType.TYPE_CLASS_NUMBER); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.