Это немного более общий ответ с большим количеством объяснений для будущих зрителей.
Добавить текст измененного слушателя
Если вы хотите узнать длину текста или сделать что-то еще после того, как текст был изменен, вы можете добавить прослушивателя измененного текста к вашему тексту редактирования.
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) {
}
});
Слушатель нужен TextWatcher, который требует три способа быть переопределены: beforeTextChanged, onTextChangedиafterTextChanged .
Подсчет персонажей
Вы можете получить количество символов в onTextChangedили beforeTextChangedс
charSequence.length()
или в afterTextChangedс
editable.length()
Значение методов
Параметры немного сбивают с толку, поэтому здесь есть несколько дополнительных объяснений.
beforeTextChanged
beforeTextChanged(CharSequence charSequence, int start, int count, int after)
charSequence: Это текстовое содержимое до внесения ожидающих изменений. Вы не должны пытаться изменить это.
start: Это индекс того, где новый текст будет вставлен. Если диапазон выбран, то это начальный индекс диапазона.
count: Это длина выделенного текста, который будет заменен. Если ничего не выбрано, то countбудет0 .
after: это длина текста для вставки.
OnTextChanged
onTextChanged(CharSequence charSequence, int start, int before, int count)
charSequenceЭто текстовое содержимое после внесения изменений. Вы не должны пытаться изменить это значение здесь. Изменить editableвafterTextChanged если вам нужно.
start: Это индекс начала, где был вставлен новый текст.
beforeЭто старая ценность. Это длина ранее выбранного текста, который был заменен. Это то же значение, что и countвbeforeTextChanged .
count: Это длина текста, который был вставлен. Это то же значение, что и afterв beforeTextChanged.
afterTextChanged
afterTextChanged(Editable editable)
Мол onTextChanged, это вызывается после того, как изменение уже сделано. Однако теперь текст может быть изменен.
editable: Это редактируемый текст EditText. Если вы измените его, вы должны быть осторожны, чтобы не попасть в бесконечный цикл. Смотрите документацию для более подробной информации.
Дополнительное изображение из этого ответа
