2012-06-15 5 views
12

Ich habe eine Reihe von EditText Felder auf einer Android-App und ich habe Android: Ziffern, um die Eingabe ungültiger Zeichen zu stoppen.Mit Android: Ziffern Attribut, um Zeichen zu beschränken stoppt Aktion nächste Schaltfläche

zB: android:digits="@string/validchars" (wobei "ValidChars" ist ein String-Ressource aller gültigen Zeichen - zB AZ, 0-9, und einige Satzzeichen)

Das Problem ist, wenn der Benutzer die ENTER-Taste trifft auf der Soft-Tastatur hat man sie zum nächsten Feld gebracht, aber seit ich android: digits gebe, funktioniert das nicht mehr. Ich habe versucht, \ n zu validchars hinzuzufügen, aber dies erlaubt nur Carriage Returns in den einzelnen Zeilen Textfelder (!), So dass es nicht hilft. Ich habe versucht, mit den imeOptions zu fummeln (Hinzufügen actionNext etc), aber das scheint es auch nicht zu beheben. Ich habe über TextWatchers und InputFilters gelesen, aber beide scheinen für das, was ich versuche, zu kompliziert zu sein, und das android:digits-Bit funktioniert einwandfrei, wenn die ungültigen Zeichen angehalten werden.

Hat jemand irgendwelche Ideen?

Ich verwende Android SDK Version 8 und Ausrichtung auf 2.2 und 2.3.5 Geräte.

Antwort

22

Nach ein bisschen stochern mit den Attributen für einen EditText habe ich festgestellt, dass, wenn ich android: singleLine = "true" die ENTER-Taste jetzt den Fokus auf das nächste Feld bewegt, auch wenn ein Android: Ziffern einschränkt die eingegebenen Zeichen. Problem gelöst! (für mich sowieso!)

+0

Alternativ, wenn der Benutzer eine "done" -Option anstelle der nächsten haben möchte, finden Sie in dieser Frage, die sich auf http://stackoverflow.com/questions/1919742/android-editview- done-button – CrimsonX

+0

android: singleLine veraltet = (ist es anders möglich? –

+0

Ich glaube, dass Sie jetzt maxLines = "1" – Buzby