Me gustaría establecer la maxLength
propiedad mediante programación TextView
ya que no quiero codificarlo en el diseño. No puedo ver ningún set
método relacionado con maxLength
.
¿Alguien puede guiarme para lograr esto?
Me gustaría establecer la maxLength
propiedad mediante programación TextView
ya que no quiero codificarlo en el diseño. No puedo ver ningún set
método relacionado con maxLength
.
¿Alguien puede guiarme para lograr esto?
Respuestas:
Debería ser algo así. pero nunca lo usé para textview, solo 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))
mantener viejos filtros con kotlin
Prueba esto
int maxLengthofEditText = 4;
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLengthofEditText)});
Límite fácil de editar caracteres de texto :
EditText ed=(EditText)findViewById(R.id.edittxt);
ed.setFilters(new InputFilter[]{new InputFilter.LengthFilter(15)});
Para aquellos de ustedes que usan Kotlin
fun EditText.limitLength(maxLength: Int) {
filters = arrayOf(InputFilter.LengthFilter(maxLength))
}
Entonces puede usar un simple editText.limitLength (10)
Como dijo João Carlos , en el uso de Kotlin:
editText.filters += InputFilter.LengthFilter(10)
Consulte también https://stackoverflow.com/a/58372842/2914140 sobre el comportamiento extraño de algunos dispositivos.
(Añadir android:inputType="textNoSuggestions"
a tu EditText
.)
LengthFilter(10)
) y luego agregar otro ( LengthFilter(20)
).
Para Kotlin y sin reiniciar los filtros anteriores:
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))
Hice una función de extensión simple para este
/**
* 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);
la mejor solución que encontré
textView.setText(text.substring(0,10));
EditText
, pero corta un texto después del décimo símbolo (una vez).
Para mantener el filtro de entrada original, puede hacerlo de esta manera:
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);