Я бы хотел программно установить maxLength свойство TextView, так как я не хочу жестко кодировать его в макете. Я не вижу set метода, связанного с maxLength.
maxLength
TextView
set
Кто-нибудь может подсказать мне, как этого добиться?
Должно быть что-то в этом роде. но никогда не использовал его для просмотра текста, только edittext:
TextView tv = new TextView(this); int maxLength = 10; InputFilter[] fArray = new InputFilter[1]; fArray[0] = new InputFilter.LengthFilter(maxLength); tv.setFilters(fArray);
Попробуйте это
int maxLengthofEditText = 4; editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLengthofEditText)});
Простой способ ограничение редактирования текста символа :
EditText ed=(EditText)findViewById(R.id.edittxt); ed.setFilters(new InputFilter[]{new InputFilter.LengthFilter(15)});
Для тех из вас, кто использует Kotlin
fun EditText.limitLength(maxLength: Int) { filters = arrayOf(InputFilter.LengthFilter(maxLength)) }
Тогда вы можете просто использовать простой editText.limitLength (10)
Для Kotlin и без сброса предыдущих фильтров:
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))
лучшее решение, которое я нашел
textView.setText(text.substring(0,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);