Düzende sabit kodlamak istemiyorum gibi programsal olarak maxLengthözelliğini ayarlamak TextViewistiyorum. setİle ilgili herhangi bir yöntem göremiyorum maxLength.
Bunu başarmak için bana rehberlik eden var mı?
Düzende sabit kodlamak istemiyorum gibi programsal olarak maxLengthözelliğini ayarlamak TextViewistiyorum. setİle ilgili herhangi bir yöntem göremiyorum maxLength.
Bunu başarmak için bana rehberlik eden var mı?
Yanıtlar:
Böyle bir şey olmalı. ancak metin görünümü için hiç kullanmadı, yalnızca düzenleme metni:
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))kotlin ile eski filtreleri sakla
Bunu dene
int maxLengthofEditText = 4;
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLengthofEditText)});
Kolay yol sınırı metin karakterini düzenleme :
EditText ed=(EditText)findViewById(R.id.edittxt);
ed.setFilters(new InputFilter[]{new InputFilter.LengthFilter(15)});
Kotlin'i kullananlar için
fun EditText.limitLength(maxLength: Int) {
filters = arrayOf(InputFilter.LengthFilter(maxLength))
}
O zaman basit bir editText.limitLength (10) kullanabilirsiniz.
As João Carlos Kotlin kullanımda, şunları söyledi:
editText.filters += InputFilter.LengthFilter(10)
Ayrıca, bazı cihazların tuhaf davranışı hakkında https://stackoverflow.com/a/58372842/2914140 adresine bakın .
( android:inputType="textNoSuggestions"Kendinize ekleyin EditText.)
LengthFilter(10)) kaldırmalı ve ardından başka bir ( LengthFilter(20)) eklemeliyiz .
Kotlin için ve önceki filtreleri sıfırlamadan:
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))
Bunun için basit bir uzantı işlevi yaptım
/**
* 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);
bulduğum en iyi çözüm
textView.setText(text.substring(0,10));
EditText, ancak 10. sembolden sonra metni keser (bir kez).
Orijinal giriş filtresini korumak için bunu şu şekilde yapabilirsiniz:
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);