Как захватить сенсорное событие ViewRoot (или вообще решить описанную проблему) - PullRequest
0 голосов
/ 01 марта 2019

В моем приложении мне нужно заставить его реагировать определенным образом, если оно быстро и быстро нажимается в любом месте дважды, за исключением таких компонентов, как кнопка или текстовое представление.

Я могуЗахватите его в любом месте, кроме следующей ситуации:

Если отображается заказное AlertDialog, если я нажимаю описанным способом в месте, расположенном рядом с границей, или даже при нажатии также LinearLayout позади него никакой реакции не происходит.

Но я проверил в окне «Выполнить», что при нажатии там запускается следующее:

I/ViewRootImpl: ViewRoot's Touch Event : ACTION_DOWN

I/ViewRootImpl: ViewRoot's Touch Event : ACTION_UP

Итак, я думаю, что если бы я могзахватите его, просто проверив, что 2 ACTION_DOWN произошло за короткое время, и это удовлетворит мою потребность.

Я пытался перегрузить публичную логическую функцию onTouchEvent (MotionEvent ev), но она никогда не запускалась.

Я также пытался переопределить public boolean onInterceptTouchEvent(MotionEvent ev), как видно здесь , но я не могу понять, как получить ViewGroup, который бы реагировал на это от элементовУ меня есть.

Есть ли способ захватитьЭто событие или любой другой способ решить эту проблему?

...