Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

113
Views
TextField maxLength - Redacción Jetpack de Android

¿Hay alguna solución lista para usar para limitar el tamaño de los caracteres en TextField's? No veo ningún parámetro maxLength como el que teníamos en XML.

over 4 years ago · Hanz Gallego
3 answers
Answer question

0

Con 1.xy no hay un parámetro integrado. Puedes usar algo como:

 var text by remember { mutableStateOf(TextFieldValue("")) } val maxChar = 5 TextField( singleLine = true, value = text, onValueChange = { if (it.length <= maxChar) text = it } )
over 4 years ago · Hanz Gallego Report

0

Otra forma de hacer esto que podría considerarse más flexible es algo como:

 Text( text = "A string with a lot of charsssssssssssssssssssssssssss" modifier = Modifier.fillMaxWidth(.5f), maxLines = 1, overflow = TextOverflow.Ellipsis )

esto restringirá el ancho con el bit fillMaxWidth y el alto con la parte maxLines . Si se alcanzan ambas restricciones, el texto se desbordará y se puede especificar el comportamiento para el desbordamiento.

en este caso, una vez que el texto ocupaba la mitad de la vista o pasaba más de una línea, terminaría algo así como A string with a lot of charsssss...

over 4 years ago · Hanz Gallego Report

0

La primera respuesta a esta pregunta funciona bien, pero es cierto que en algunos casos hay un error que al exceder la cantidad de caracteres permitidos, se borra el valor del texfield. Esta falla parece deberse al texto predictivo, porque si el texto predictivo está deshabilitado en Android, no sucede. Una solución que encontré por ahora como solución alternativa es usar focusManager para "limitar la escritura".

Primero, necesitamos que el administrador de enfoque controle el enfoque en la pantalla. Podemos hacer esto agregando esta línea dentro de nuestra función componible:

 val focusManager = LocalFocusManager.current

Luego, en nuestro TextField podemos usar el focusManager para evitar que el usuario escriba más que el límite maxChar. Podemos mover el foco al siguiente elemento, borrar el foco cuando se supere el límite de maxChar o recibir una función lambda y realizar la acción que queramos. Eso depende de nosotros.

 var text by remember { mutableStateOf(TextFieldValue("")) } val maxChar = 10 TextField( singleLine = true, value = text, onValueChange = { // This line will take (in case the user try to paste a text from the clipboard) only the allowed amount of characters text = it.take(maxChar) if (it.length > maxChar){ focusManager.moveFocus(FocusDirection.Down) // Or receive a lambda function } } )

De esta forma el usuario nunca podrá escribir más caracteres de los establecidos por el límite. Obviamente, esta es una solución alternativa, que en mi caso resolvió mi problema, ahora toca esperar a ver si lo agregan de forma nativa.

over 4 years ago · Hanz Gallego Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!