Ich möchte die maxLength
Eigenschaft programmgesteuert festlegen, TextView
da ich sie im Layout nicht fest codieren möchte. Ich kann keine set
Methode sehen, die damit zusammenhängt maxLength
.
Kann mir jemand helfen, wie ich das erreichen kann?
Ich möchte die maxLength
Eigenschaft programmgesteuert festlegen, TextView
da ich sie im Layout nicht fest codieren möchte. Ich kann keine set
Methode sehen, die damit zusammenhängt maxLength
.
Kann mir jemand helfen, wie ich das erreichen kann?
Antworten:
Sollte so etwas 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);
editText.filters = arrayOf(*editText.filters, InputFilter.LengthFilter(10))
Behalte alte Filter mit Kotlin
Versuche dies
int maxLengthofEditText = 4;
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLengthofEditText)});
Einfache Möglichkeit , Textzeichen zu bearbeiten :
EditText ed=(EditText)findViewById(R.id.edittxt);
ed.setFilters(new InputFilter[]{new InputFilter.LengthFilter(15)});
Für diejenigen unter Ihnen, die Kotlin verwenden
fun EditText.limitLength(maxLength: Int) {
filters = arrayOf(InputFilter.LengthFilter(maxLength))
}
Dann können Sie einfach eine einfache editText.limitLength (10) verwenden.
Wie João Carlos sagte, verwenden Sie in Kotlin:
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 Ihrem EditText
.)
LengthFilter(10)
) entfernen und dann einen weiteren ( LengthFilter(20)
) hinzufügen .
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))
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)
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title");
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
//for Limit...
input.setFilters(new InputFilter[] {new InputFilter.LengthFilter(3)});
builder.setView(input);
beste Lösung, die ich gefunden habe
textView.setText(text.substring(0,10));
EditText
, aber ein Text wird nach dem 10. Symbol (einmalig) abgeschnitten.
Um den ursprünglichen Eingabefilter beizubehalten, können Sie dies folgendermaßen tun:
InputFilter.LengthFilter maxLengthFilter = new InputFilter.LengthFilter(100);
InputFilter[] origin = contentEt.getFilters();
InputFilter[] newFilters;
if (origin != null && origin.length > 0) {
newFilters = new InputFilter[origin.length + 1];
System.arraycopy(origin, 0, newFilters, 0, origin.length);
newFilters[origin.length] = maxLengthFilter;
} else {
newFilters = new InputFilter[]{maxLengthFilter};
}
contentEt.setFilters(newFilters);