如何在Android TextView中以编程方式设置maxLength?

UMA*_*MAR 162 android maxlength textview

我想以编程方式设置maxLength属性,TextView因为我不想在布局中硬编码.我看不到任何set与之相关的方法maxLength.

谁能指导我如何实现这一目标?

Sep*_*phy 348

应该是这样的.但从未将它用于textview,只使用edittext:

TextView tv = new TextView(this);
int maxLength = 10;
InputFilter[] fArray = new InputFilter[1];
fArray[0] = new InputFilter.LengthFilter(maxLength);
tv.setFilters(fArray);
Run Code Online (Sandbox Code Playgroud)

  • 在此基础上,它可能更清晰:tv.setFilters(new InputFilter [] {new InputFilter.LengthFilter(10)}); (114认同)
  • 不能只说"maxLength()"..不,不,不..这太容易了.他们不得不抽象它...耶! (35认同)
  • 使用Kotlin,你可以使它更干净:editText.filters = arrayOf(InputFilter.LengthFilter(10)) (16认同)
  • 但这会重置以前的过滤器,不是吗? (3认同)
  • `editText.filters = arrayOf(* editText.filters,InputFilter.LengthFilter(10))`用kotlin保留旧过滤器 (2认同)

Int*_*iya 78

试试这个

int maxLengthofEditText = 4;    
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLengthofEditText)});
Run Code Online (Sandbox Code Playgroud)

  • 这不是"另一种方式",这是第一个答案的简短版本,同样的方式. (10认同)

Far*_*med 17

简单方法限制编辑文本字符:

EditText ed=(EditText)findViewById(R.id.edittxt);
ed.setFilters(new InputFilter[]{new InputFilter.LengthFilter(15)});
Run Code Online (Sandbox Code Playgroud)


Kev*_*vin 13

对于那些使用Kotlin的人

fun EditText.limitLength(maxLength: Int) {
    filters = arrayOf(InputFilter.LengthFilter(maxLength))
}
Run Code Online (Sandbox Code Playgroud)

然后你可以使用一个简单的editText.limitLength(10)


Coo*_*ind 13

正如João Carlos所说,在 Kotlin 中使用:

editText.filters += InputFilter.LengthFilter(10)
Run Code Online (Sandbox Code Playgroud)

另请参阅/sf/answers/4086098971/关于某些设备的奇怪行为。

(添加android:inputType="textNoSuggestions"到您的EditText.)


san*_*alu 6

对于 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))
Run Code Online (Sandbox Code Playgroud)