Это немного более общий ответ с большим количеством объяснений для будущих зрителей.
Добавить текст измененного слушателя
Если вы хотите узнать длину текста или сделать что-то еще после того, как текст был изменен, вы можете добавить прослушивателя измененного текста к вашему тексту редактирования.
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
. Если вы измените его, вы должны быть осторожны, чтобы не попасть в бесконечный цикл. Смотрите документацию для более подробной информации.
Дополнительное изображение из этого ответа