onTextChanged
;
beforeTextChanged
;
afterTextChanged
.
Объекты
TextView
, включая
EditText
, которые реализуют интерфейс
TextWatch
ers
, можно настроить на получение событий изменения текста вызовом
add
TextChangedListener
.
Это один из немногих методов, позволяющих подключить несколько обработчи
-
ков. Существует также парный ему метод
removeTextChangedListener
.
Используя
TextWatcher
, можно определить момент изменения содержимого
текстового поля ввода. Часто это именно то, что нам нужно. Сигнатуры мето
-
дов интерфейса
TextWatcher
существенно отличаются, тем не менее каждый из
них предоставляет доступ к измененному тексту как к экземпляру
Editable
или
CharSequence
:
Java
EditText editText = new EditText(this);
editText.addTextChangedListener(new TextWatcher() {
80
Пользовательский ввод
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.d("MyTag", "onTextChanged: " + s);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
Log.d("MyTag", "beforeTextChanged: " + s);
}
@Override
public void afterTextChanged(Editable s) {
Log.d("MyTag", "afterTextChanged: " + s);
}
});
Kotlin
val editText = EditText(this)
editText.addTextChangedListener(object : TextWatcher {
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
Log.d("MyTag", "onTextChanged: $s")
}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int,
after: Int) {
Log.d("MyTag", "beforeTextChanged: $s")
}
override fun afterTextChanged(s: Editable) {
Log.d("MyTag", "afterTextChanged: $s")
}
})
Помимо изменения текста и учитывая, что физическую клавиатуру будет ис
-
пользовать очень незначительное число пользователей, мы должны признать,
что основной интерес для нас представляет поведение программной клавиа
-
туры и некоторое знакомство с идеей «IME». Аббревиатура «IME» расшифро
-
вывается как «Input Method Editor» (редактор методов ввода) и с технической
точки зрения может представлять все, что угодно, способное обрабатывать со
-
бытия от аппаратных компонентов, но на самом деле почти всегда относится
к управлению программной клавиатурой, обычно через
TextView
, и часто через
экземпляр класса
EditText
, наследующего
TextView
, который имеет встроенные
функции редактирования.
Как и большинство представлений, IME может настраиваться в макетах
XML или программно. К наиболее широко используемым IME API относятся
android:imeOptions
и
TextView.setImeOptions
. Оба принимают целое число, пред
-
ставляющее различные флаги IME, такие как «go», «next», «previous», «search»,
«done» и «send». Иногда семантика флагов выражает поведение, но это не всег
-
да так. Например, «next» и «previous» изменяют фокус ввода, а «go», «done»
и «send» могут явно ничего не делать, но должны передавать разные значения
подключенным обработчикам.
Android
81
Например, можно создать экземпляр
EditText
с флагом
android:imeOptions="
actionSend"
. Когда этот экземпляр получает фокус ввода, он откроет экранную
клавиатуру с отдельной кнопкой для действия
Do'stlaringiz bilan baham: |