Wie lässt sich die Textlänge eines Dokuments am besten begrenzen? EditText
in Android?
Gibt es eine Möglichkeit, dies über xml zu tun?
Wie lässt sich die Textlänge eines Dokuments am besten begrenzen? EditText
in Android?
Gibt es eine Möglichkeit, dies über xml zu tun?
Oje! Das Gleiche ist mir auch passiert. Ich habe mir den Code angesehen, und es gibt keine setMaxLength-Methode.
Ich glaube, jemand hielt es für clever, die Seite "Click here" mit dieser Seite zu verlinken. Als ich die Antwort ursprünglich schrieb, war sie mit der Seite für Android-Entwickler verlinkt, aber seitdem wurden Änderungen vorgenommen. Ich werde die Historie durchforsten und eine Änderung beantragen, um den Link wiederherzustellen.
Ich hatte dieses Problem und bin der Meinung, dass uns eine gut erklärte Möglichkeit fehlt, dies programmatisch zu tun, ohne die bereits gesetzten Filter zu verlieren.
Einstellung der Länge in XML:
Wie die akzeptierte Antwort richtig sagt, wenn Sie eine feste Länge zu einem EditText definieren möchten, die Sie nicht weiter in der Zukunft ändern, definieren Sie einfach in Ihrem EditText XML:
android:maxLength="10"
Programmatische Einstellung der Länge
Um die Länge programmatisch festzulegen, müssen Sie sie durch eine InputFilter
. Wenn Sie jedoch einen neuen InputFilter erstellen und ihn auf den EditText
verlieren Sie alle anderen bereits definierten Filter (z. B. maxLines, inputType usw.), die Sie entweder über XML oder programmatisch hinzugefügt haben.
Dies ist also FALSCH :
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});
Um zu vermeiden, dass zuvor hinzugefügte Filter verloren gehen, müssen Sie diese Filter abrufen, den neuen Filter (in diesem Fall maxLength) hinzufügen und die Filter wieder auf den EditText
wie folgt:
Java
InputFilter[] editFilters = editText.getFilters();
InputFilter[] newFilters = new InputFilter[editFilters.length + 1];
System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length);
newFilters[editFilters.length] = new InputFilter.LengthFilter(maxLength);
editText.setFilters(newFilters);
Kotlin jedoch für alle einfacher gemacht, müssen Sie auch den Filter zu den bereits vorhandenen hinzufügen, aber Sie können das mit einem einfachen erreichen:
editText.filters += InputFilter.LengthFilter(maxLength)
Ein Hinweis für diejenigen, die bereits einen benutzerdefinierten Eingabefilter verwenden und également die maximale Länge begrenzen möchten:
Wenn Sie Eingangsfilter im Code zuweisen, werden alle zuvor gesetzten Eingangsfilter gelöscht, auch die, die mit android:maxLength
. Ich fand dies heraus, als ich versuchte, einen benutzerdefinierten Eingabefilter zu verwenden, um die Verwendung einiger Zeichen zu verhindern, die wir in einem Kennwortfeld nicht zulassen. Nachdem ich diesen Filter mit setFilters gesetzt hatte, wurde die maxLength nicht mehr eingehalten. Die Lösung bestand darin, maxLength und meinen benutzerdefinierten Filter zusammen programmatisch zu setzen. Etwa so:
myEditText.setFilters(new InputFilter[] {
new PasswordCharFilter(), new InputFilter.LengthFilter(20)
});
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
1 Stimmen
Ich wollte die maximale Anzahl von Zeichen für meinen EditText festlegen. Zuerst war es nicht offensichtlich, dass die Begrenzung der Textlänge dasselbe ist. (Nur eine Anmerkung für einen anderen verwirrten Reisenden).
0 Stimmen
El die richtige Antwort finden Sie hier : stackoverflow.com/a/19222238/276949 . Diese Antwort begrenzt die Länge UND verhindert, dass sich ein Puffer kontinuierlich füllt, nachdem er die Grenze erreicht hat, so dass Ihre Rücktaste richtig zu funktionieren.