Eu queria saber qual é a melhor maneira de fazer uma contagem de caracteres ao vivo de uma caixa de texto de edição no Android. Eu estava olhando para isso, mas não conseguia entender.
Para descrever o problema, tenho um EditText e estou tentando limitar os caracteres a 150. Posso fazer isso com um filtro de entrada, no entanto, quero mostrar logo abaixo da caixa de texto o número de caracteres que um usuário inseriu (quase como o estouro de pilha está fazendo agora).
Se alguém pudesse escrever um pequeno trecho de código de exemplo ou me apontar na direção certa, eu agradeceria muito.
Você pode fazer contagem de caracteres a partir do próprio xml usando o wrapper TextInputLayout para EditText introduzido no SupportLibrary v23.1
Basta envolver seu EditText com um TextInputLayout e definir CounterEnabled como true e definir um counterMaxLength.
Você obterá um efeito material como este
Você pode usar counterOverflowTextAppearance , counterTextAppearance para definir o estilo do contador.
EDITAR
Da documentação do Android.
A classe TextInputEditText é fornecida para ser usada como filho desse layout. O uso de TextInputEditText permite a TextInputLayout maior controle sobre os aspectos visuais de qualquer entrada de texto. Um exemplo de uso é assim:
TextInputLayout TextInputEditText
fonte
Você pode fazer isso com
TextInputLayout
bibliotecas e compat com:e completo:
fonte
em xml adicione este atributo para editText
em java adicione este ouvinte
fonte
É muito simples. Siga as instruções abaixo:
==== Adicione-os às suas importações ===
===== Defina isto =====
========== Inside On Create =====
fonte
fonte
Basta definir estas 2 linhas
TextInputLayout
em seu arquivo XML:fonte
Esta solução usa
Kotlin
e mostra o número de caracteres restantes. Além disso, se o número atual de caracteres ultrapassar o limite de 50, a cor do texto mudará para vermelho.Kotlin
Além disso, não se esqueça de adicionar
TextWatcher
ao seuEditText
fonte
Você pode adicionar um contador ao TextInputEditText sendo encapsulado em um TextInputLayout. Como você pode ver no exemplo,
counterEnabled
habilita esse recurso ecounterMaxLengh
define o número de caracteres para ele.fonte
Eu encontrei o mesmo problema e tentei o método de Cameron. Funciona, mas há um pequeno bug: se o usuário usar copiar e colar, não contará os caracteres. Então sugiro que faça após a alteração do texto, conforme abaixo:
fonte
Use android: maxLength = "140"
Isso deve funcionar. :)
espero que ajude
fonte
Tente fazer algo assim.
Essa solução pode ter mais desempenho do que obter CharSequence.length. Cada vez que você toca no teclado virtual, o evento é disparado; portanto, se você fizer um comprimento, ele contará o CharSequence a cada vez, o que pode diminuir se você começar a obter grandes CharSequnces. O ouvinte de eventos na mudança de texto segue a contagem de antes e depois. Isso funciona bem para valores de incremento e decremento
fonte
tente isso
`
fonte
Caminho claro;
fonte