Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

116
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda