Ich möchte programmatisch festlegen maxLength
Eigentum von TextView
da ich es nicht hart im Layout codieren möchte. ich kann keine sehen set
Methode im Zusammenhang mit maxLength
.
Kann mir jemand helfen, wie man dies erreicht?
UMAR-MOBITSOLUTIONS
Ich möchte programmatisch festlegen maxLength
Eigentum von TextView
da ich es nicht hart im Layout codieren möchte. ich kann keine sehen set
Methode im Zusammenhang mit maxLength
.
Kann mir jemand helfen, wie man dies erreicht?
Sephy
Sollte so ähnlich sein. aber nie für die Textansicht verwendet, nur edittext :
TextView tv = new TextView(this);
int maxLength = 10;
InputFilter[] fArray = new InputFilter[1];
fArray[0] = new InputFilter.LengthFilter(maxLength);
tv.setFilters(fArray);
Darauf aufbauend könnte es viel sauberer sein, zu gehen: tv.setFilters( new InputFilter[] { neuer InputFilter.LengthFilter(10)});
– Mark D
15. Mai ’12 um 20:38 Uhr
Könnte nicht einfach “maxLength()” sagen.. nein, nein, nein.. das wäre zu einfach. sie mussten es abstrakt machen.. yay!
– wütendITguy
15. Juli ’16 um 6:11
Aber das setzt deine vorherigen Filter zurück, nicht wahr?
– crgarridos
11. Okt ’17 um 9:46
Mit Kotlin können Sie es sauberer machen: editText.filters = arrayOf(InputFilter.LengthFilter(10))
– Elvis Chidera
9. Dezember ’17 um 6:54
editText.filters = arrayOf(*editText.filters, InputFilter.LengthFilter(10))
alte filter mit kotlin behalten
– Peter Samokhin
26. Juli ’19 bei 0:24
IntelliJ Amiya
Versuche dies
int maxLengthofEditText = 4;
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLengthofEditText)});
Das funktioniert bei mir, aber in Android 5.1 kann man weiterhin Buchstaben eingeben, die im Eingabefeld nur “unsichtbar” sind. Aber sie werden im Textvorschlag gezeigt. Und wenn Sie versuchen, Buchstaben am Ende zu löschen.
– Radon8472
3. Dezember ’15 um 15:14
Dies ist kein “anderer Weg”, dies ist die Kurzversion der ersten Antwort auf die gleiche Weise.
– Ninja-Codierung
11. Januar ’16 um 17:22
Farid Ahmed
Einfacher Weg Textzeichen bearbeiten begrenzen :
EditText ed=(EditText)findViewById(R.id.edittxt);
ed.setFilters(new InputFilter[]{new InputFilter.LengthFilter(15)});
CoolMind
Wie João Carlos sagte, in Kotlin verwenden:
editText.filters += InputFilter.LengthFilter(10)
Siehe auch https://stackoverflow.com/a/58372842/2914140 über das seltsame Verhalten einiger Geräte.
(Hinzufügen android:inputType="textNoSuggestions"
zu deinem EditText
.)
Warum nicht setMaxLength als Funktionsnamen verwenden? Sie könnten dies auch auf die Textansicht anwenden … danke +1 🙂
– crgarridos
11. Okt ’17 um 9:42
Ich habe andere Methoden, die diesem Muster folgen: limitDecimalPlaces, limitNumberOnly, limitAscii für limitLength.
– Kevin
13. Okt ’17 um 18:37
filter = filter.plus(InputFilter.LengthFilter(max)) Vorhandene nicht überschreiben
– ersin-ertan
30. Okt. 18 um 4:20
Fatih Santalu
Für Kotlin und ohne Zurücksetzen vorheriger Filter:
fun TextView.addFilter(filter: InputFilter) {
filters = if (filters.isNullOrEmpty()) {
arrayOf(filter)
} else {
filters.toMutableList()
.apply {
removeAll { it.javaClass == filter.javaClass }
add(filter)
}
.toTypedArray()
}
}
textView.addFilter(InputFilter.LengthFilter(10))
Kyriakos Georgiopoulos
Ich habe eine einfache Erweiterungsfunktion für diese gemacht
/**
* maxLength extension function makes a filter that
* will constrain edits not to make the length of the text
* greater than the specified length.
*
* @param max
*/
fun EditText.maxLength(max: Int){
this.filters = arrayOf<InputFilter>(InputFilter.LengthFilter(max))
}
editText?.maxLength(10)
Serhii Stakhiv
Meine Lösung für SWIFT 5
editText.filters = arrayOf<InputFilter>(InputFilter.LengthFilter(123))
.