сенсорные прослушиватели и текстовые представления
-
18-09-2019 - |
Вопрос
На самом деле я пытаюсь внедрить ontouchlistener в свое приложение для Android (1.5).поэтому я реализовал «ontouchlistener» в классе, а затем поместил свой код в:
public boolean onTouchEvent (MotionEvent e){
//code
}
Проблема в том, что если я перетаскиваю (например) Spinner или EditTextView, этот метод не вызывается.Единственный способ решить эту проблему, который я понял, — это добавить ontouchlistener к каждому из этих представлений вручную:
((Spinner)(findViewById(R.id.spinner1))).setOnTouchListener(tl);
((Spinner)(findViewById(R.id.spinner2))).setOnTouchListener(tl);
(TL - это ontouchlistener), так что нет способа поймать событие Touch, прежде чем оно достигнет каждого из этих видов?заранее спасибо
Рипей
Решение
Что именно вы хотите сделать? Вы хотите:
- Обнаружение целых жестов в некоторых
Activity
. - Обнаруживать касания только для данного
View
Если вы хотите первое:
Взгляните на этот пример:Обнаружение жестов броска на макете сетки.
По сути, вы перенаправляете все зарегистрированные события касания на GestureDetector
.Он понимает, что именно вводит пользователь (одиночное нажатие, двойное нажатие, прокрутка и т. д.), и вызывает соответствующий обратный вызов в SimpleOnGestureListener
, который вы должны реализовать.
Если вы хотите последнее:
Вы также можете:
- Переопределить представление
onTouchEvent()
. - Орудие и крючок
onTouchListener
(если вы хотите получить контакт до его отправки).
Если вы хотите реализовать onTouchListener
, вы будете делать свою работу не в onTouchEvent()
метод, но в интерфейсе onTouch()
метод.
Надеюсь, это поможет.