Maskierte Eingabe mit EditText Widget in Android

Gibt es eine Möglichkeit, ich kann eine Eingabemaske auf das EditText-Steuerelement in Android angeben?

Ich möchte in der Lage sein, etwas wie ### – ## – #### für eine Sozialversicherungsnummer anzugeben. Dies führt dazu, dass jede ungültige Eingabe automatisch abgelehnt wird (Beispiel, ich gebe alphabetische Zeichen anstelle von numerischen Ziffern).

  • Außerhalb des Speichers auf einer Bytezuweisung (Bitmap als String zum Webservice mit Seife)
  • Android HLS Video Mime Typ
  • Ersetzen von EventBus mit RxJava - N Abonnenten immer zuhören
  • Eingehender Anruf dynamisch überschreiben Standard-Klingelton
  • Speichern / Erstellen von MMS im Posteingang Android
  • Android: Benachrichtigungston deaktivieren
  • Ich merke, dass ich einen OnKeyListener hinzufügen und manuell auf Gültigkeit prüfen kann. Aber das ist langweilig und ich muss mit verschiedenen Randfällen umgehen.

    Buzzy

  • Java.lang.InstantiationException: class hat keinen Null-Argument-Konstruktor
  • WebView wirft Receiver nicht registriert: android.widget.ZoomButtonsController
  • Erste Schritte mit Android-Entwicklung mit Honeycomb
  • Android-Szenario, wo ondestroy () ohne onpause () oder onstop () aufgerufen wird
  • Wie kann ich die Tab-Aktivität neu laden, wenn sich die Registerkarte ändert?
  • SQLite Android. Kann die Datenbankdatei nicht öffnen
  • 6 Solutions collect form web for “Maskierte Eingabe mit EditText Widget in Android”

    Versuchen Sie, einen InputFilter anstatt einen OnKeyListener . Das bedeutet, dass Sie sich keine Sorgen um die Verfolgung einzelner Tastenpressen machen und es wird auch Dinge wie Einfügen in ein Feld behandeln, das schmerzhaft wäre, mit einem OnKeyListener .

    Sie könnten einen Blick auf die Quelle der InputFilter Implementierungen , die mit Android kommen, um Ihnen einen Ausgangspunkt für das Schreiben Ihrer eigenen.

    Sie können einen Blick auf die android.telephony.PhoneNumberFormattingTextWatcher Klasse. Es maskiert eine Telefonnummer Texteingabe mit dem Muster ### – ### – ####.

     String phoneNumber = "1234567890"; String text = String.valueOf( android.telephony.PhoneNumberUtils.formatNumber(phoneNumber) ); //formatted: 123-456-7890 editTextMobile.setText(text); //set editText text equal to new formatted number editTextMobile.setSelection(text.length()); //move cursor to end of editText view 

    Verwenden Sie diese in einer onKey Funktion für köstliche On-the-fly Bunny Sex mit formatierten Telefonnummern.

    Der einfachste Weg, den ich kenne, um eine Maske auf EditText in deinen Android-Programmen in Android Studio zu verwenden, ist die Verwendung der MaskedEditText Bibliothek ( GitHub-Link ). Es ist eine Art von benutzerdefinierten EditText mit Watcher, die Ihnen erlaubt, einen Hinweis mit verschiedenen Farben (wenn Sie wollen, dass es verfügbar sein wird, auch wenn Benutzer bereits angefangen zu schreiben), Maske und es ist sehr einfach zu bedienen 🙂

     compile 'ru.egslava:MaskedEditText:1.0.5' <br.com.sapereaude.maskedEditText.MaskedEditText android:id="@+id/phone_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone" android:typeface="monospace" mask:allowed_chars="1234567" mask:mask="###-##-##" app:keep_hint="true" /> 

    Und das ist!

    Bildbeschreibung hier eingeben

    Diese Seite gibt gut 2 Klassen, die bei der Maskierung helfen, die ich ganz nützlich fand.

    Sie müssen die Elemente in den Kommentaren verwenden, um es zu verbessern. Aber es lohnt sich, dein Programm hinzuzufügen, um die EditText-Ansichten für viele Masken zu verdecken.

    Du kannst diesen Fehler in EditText verwenden

    Bildbeschreibung hier eingeben

    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.