Me preguntaba cuál es la mejor manera de hacer un recuento de caracteres en vivo de un cuadro de texto de edición en Android. Estaba mirando esto, pero parecía que no podía encontrarle ningún sentido.
Para describir el problema, tengo un EditText y estoy tratando de limitar los caracteres a 150. Puedo hacer esto con un filtro de entrada, sin embargo, quiero mostrar justo debajo del cuadro de texto la cantidad de caracteres que un usuario ha ingresado (Casi como está haciendo el desbordamiento de pila en este momento).
Si alguien pudiera escribir un pequeño fragmento de código de ejemplo o señalarme en la dirección correcta, lo agradecería mucho.
Puede hacer el recuento de caracteres desde xml usando el contenedor TextInputLayout para EditText introducido en SupportLibrary v23.1
Simplemente envuelva su EditText con un TextInputLayout y establezca CounterEnabled en verdadero y establezca un counterMaxLength.
Obtendrás un efecto material como este
Puede usar counterOverflowTextAppearance , counterTextAppearance para diseñar el contador.
EDITAR
De la documentación de Android.
La clase TextInputEditText se proporciona para usarse como un elemento secundario de este diseño. El uso de TextInputEditText permite a TextInputLayout un mayor control sobre los aspectos visuales de cualquier entrada de texto. Un ejemplo de uso es el siguiente:
TextInputLayout TextInputEditText
fuente
Puede hacerlo
TextInputLayout
y compatibilizar bibliotecas con:y completar:
fuente
en xml agregue este atributo para editText
en java agregue este oyente
fuente
Es muy simple Siga las instrucciones a continuación:
==== Agrégalos a tus importaciones ===
===== Defina esto =====
========== Inside On Create =====
fuente
fuente
Simplemente configure estas 2 líneas
TextInputLayout
en su archivo XML:fuente
Esta solución usa
Kotlin
y muestra el número de caracteres que quedan. Además, si el número actual de caracteres supera el límite de 50, el color del texto cambiará a rojo.Kotlin
Además, no olvide agregar el
TextWatcher
a suEditText
fuente
Puede agregar un contador a su TextInputEditText envuelto en un TextInputLayout. Como puede ver en el ejemplo,
counterEnabled
habilita esta función ycounterMaxLengh
define la cantidad de caracteres para ella.fuente
Me encontré con el mismo problema y probé el método de Cameron. Funciona, pero hay un error menor: si el usuario usa copiar y pegar, no podrá contar los caracteres. Así que sugiero hacerlo después de que el texto cambie, como a continuación:
fuente
Utilice android: maxLength = "140"
Eso debería funcionar. :)
Espero que ayude
fuente
Intente hacer algo como esto.
Esta solución puede ser más eficaz en lugar de obtener CharSequence.length. Cada vez que toca en el teclado virtual, se activa el evento; por lo tanto, si hace una longitud, contará la secuencia de caracteres cada vez, lo que puede ralentizarse si comienza a obtener secuencias de caracteres grandes. El oyente de eventos en el cambio de texto incluye el recuento antes y después. Esto funciona bien para valores de incremento y decremento
fuente
prueba esto
'
fuente
Camino claro;
fuente