2014-03-26 6 views
6

Ich möchte verhindern, dass der Benutzer mehr Buchstaben als einen bestimmten Wert in ein Warndialogfeld einfügt, das eine Bearbeitungstextinstanz enthält. Ich versuche den Eingabefilter zu verwenden. Längenfilter, der jedoch nur die Zeichenfolge bis zur angeforderten Länge anzeigt. Der Benutzer kann immer noch mehr Zeichen schreiben, und wenn ich versuche, Zeichen zu löschen, geschieht nichts, bis ich genügend Zeichen lösche, damit das Wort kürzer als das Limit ist (die Tastatur merkt sich die Tasten).Verhindern, dass Benutzer weitere Zeichen einfügen, nachdem die Größenbeschränkung in EditText erreicht wurde.

EDIT: Um klarer zu sein, habe ich bereits mit InputFilter versucht. Das erzwingt tatsächlich eine String-Größe, die an den EditText übergeben wird, aber wie gesagt kann ich weiterhin Buchstaben mit der Tastatur schreiben, die nicht im Textfeld angezeigt werden. Wenn ich delete drücke, löscht es zuerst die zusätzlichen Buchstaben und erst nachdem genug Buchstaben gelöscht sind, beginne ich zu sehen, wie die Buchstaben in dem Textfeld gelöscht werden. Mein gewünschtes Szenario: Setze die Zeichenanzahl auf 10. Drücke 15 Zeichen auf meiner Tastatur. Drücken Sie dann die Rücktaste, und der letzte Buchstabe im Textfeld wird gelöscht. Ich hoffe, das ist jetzt klarer.

Kann jemand helfen?

+0

Ich weiß, das ein Jahr alt ist, aber ich versuche, um herauszufinden, ob es etwas gibt, die auch in dieser Situation getan werden kann, . Ich nehme an, dass es das nicht gibt, weil jede Tastatur das Vorschau-Display selbst handhabt, aber vielleicht gibt es etwas. Aufgrund der Disparität zwischen der Vorschau und dem, was tatsächlich im EditText ist, erscheint es definitiv wie ein seltsames UX. – codebaum

Antwort

2

können Sie folgende propery von EditText in AndroidManifest.xml verwenden

android:maxLength="8" 

Jetzt mehr als 8 Zeichen Benutzer kann nicht in der EditText hinzufügen.

0

können Sie diese Eigenschaft auch zur Laufzeit von

youredittext.setMaxLength(8); 

Sie zuweisen gesagt, dass Sie Ihre edit-Text in Alarmdialogfeld haben so diese zur Laufzeit gesetzt und versuchen.

0

SEE THIS

TextView editEntryView = new TextView(...); 
InputFilter[] filterArray = new InputFilter[1]; 
filterArray[0] = new InputFilter.LengthFilter(8); 
editEntryView.setFilters(filterArray); 
0

Sehen Sie diese Antwort auf eine teilweise Abhilfe: https://stackoverflow.com/a/19222238/933656

werden Sie in der Lage sein, sofort das letzte Zeichen in der EditText zu löschen, weil es keine Vorschau für die Tastatur zu zeigen (unter der Annahme, Alle Third-Party-Keyboards respektieren das textNoSuggestions-Flag). Das einzige Problem ist, dass Sie den Vorschlagstext verlieren.

3

Wahrscheinlich ist es zu spät, aber wenn jemand das gleiche Problem hat.

In Layout:

android:inputType="textNoSuggestions|textVisiblePassword" 
android:maxLength="20" 

Programatically:

setFilters(new InputFilter[]{new InputFilter.LengthFilter(20)}); 
setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 
+0

Arbeitete für mich danke .. :) – MohsinSyd