Esta é uma resposta um pouco mais geral, com mais explicações para futuros espectadores.
Adicionar um ouvinte alterado de texto
Se você deseja encontrar o tamanho do texto ou fazer outra coisa depois que o texto foi alterado, você pode adicionar um ouvinte alterado no texto de edição.
EditText editText = (EditText) findViewById(R.id.testEditText);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable editable) {
}
});
O ouvinte precisa de um TextWatcher
, o que requer três métodos para ser substituído: beforeTextChanged
, onTextChanged
, e afterTextChanged
.
Contando os caracteres
Você pode obter a contagem de caracteres em onTextChanged
ou beforeTextChanged
com
charSequence.length()
ou afterTextChanged
com
editable.length()
Significado dos métodos
Os parâmetros são um pouco confusos, então aqui está uma pequena explicação extra.
beforeTextChanged
beforeTextChanged(CharSequence charSequence, int start, int count, int after)
charSequence
: Este é o conteúdo do texto antes da alteração pendente. Você não deve tentar mudar isso.
start
: Este é o índice de onde o novo texto será inserido. Se um intervalo for selecionado, é o índice inicial do intervalo.
count
: Este é o tamanho do texto selecionado que será substituído. Se nada for selecionado, count
será 0
.
after
: esse é o tamanho do texto a ser inserido.
onTextChanged
onTextChanged(CharSequence charSequence, int start, int before, int count)
charSequence
: Este é o conteúdo do texto após a alteração. Você não deve tentar modificar esse valor aqui. Modificar o editable
em afterTextChanged
se você precisa.
start
: Este é o índice do início de onde o novo texto foi inserido.
before
: Este é o valor antigo. É o tamanho do texto selecionado anteriormente que foi substituído. Este é o mesmo valor que count
em beforeTextChanged
.
count
: Este é o tamanho do texto que foi inserido. Este é o mesmo valor que after
em beforeTextChanged
.
afterTextChanged
afterTextChanged(Editable editable)
Como onTextChanged
, isso é chamado depois que a alteração já foi feita. No entanto, agora o texto pode ser modificado.
editable
: Este é o texto editável do EditText
. Se você mudar, no entanto, você deve ter cuidado para não entrar em um loop infinito. Veja a documentação para mais detalhes.