Обнаруживать касание EditText, но не прерывать его?
Мне нужно знать, когда пользователь прикасается/нажимает на edittext в моей активности.
Как я могу это сделать без прерывания событий, поэтому клавиатура по-прежнему отображается правильно?
(И мне нужно знать об этом, прежде чем ОС отобразит клавиатуру... если возможно)
Ответы
Ответ 1
txtEdit.setOnTouchListener(new View.OnTouchListener(){
public boolean onTouch(View view, MotionEvent motionEvent) {
// your code here....
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
return false;
}
});
Ответ 2
View.OnTouchListener onTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
...
}
Ответ 3
Вы должны сделать это, добавив OnClickListener в свой EditText. Если вы беспокоитесь о блокировке потока пользовательского интерфейса в своем OnClickListener, вы можете создать новую тему и выполнить свою работу там - хотя, если вы это сделаете, нет гарантии, что работа будет выполнена до появления клавиатуры.
Ответ 4
Меньше подробностей
Тот же подход Матиаса Конрадта, но используя kotlin:
txtEdit.setOnTouchListener({ view, motionEvent ->
// your code here....
false
})
Эта строка getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
не нужна, поскольку клавиатура отображается, когда вы нажимаете вид редактирования.
Ответ 5
OnTouchListener
дважды OnTouchListener
(на Пикселе 2 работает Pie). Поэтому вместо этого я использовал OnFocusChangeListener
:
txtEdit.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
Log.d(TAG,"Focused Now!");
}
}
});