Це дещо більш загальна відповідь з більшим поясненням для майбутніх глядачів.
Додайте змінений слухач тексту
Якщо ви хочете знайти довжину тексту або зробити щось інше після того, як текст був змінений, ви можете додати редактор зміненого тексту до свого редагування.
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
. Якщо ви її зміните, ви повинні бути обережними, щоб не потрапити в нескінченну петлю. Детальнішу інформацію див. У документації .