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