Как я могу поддерживать события Ontouch, обрабатываемые виджетом, даже если сенсорные координации больше не находятся внутри виджета, в Android

StackOverflow https://stackoverflow.com/questions/6803959

Вопрос

Извините за сложный вопрос, позвольте мне объяснить. Я создал пользовательский виджет, который обрабатывает некоторые события OnTouch. Что я хочу сделать, так это когда я запускаю событие Touch в этом пользовательском виджете (Ondown), я хочу, чтобы этот виджет продолжал заниматься этим событием, даже если абсолютные координации не находятся в этом виджете.

У меня есть Scrollview, и сверху этого (внутри Scrollview) виджет, который обрабатывает (слева - справа) свитки. Но если я перемещаю пальцем вертикально, события Ontouch потребляются и обрабатываются Scollview. Если есть способ отрубить ScrollView, чтобы обрабатывать события прикосновения или лучше заставить пользовательского виджета продолжать обрабатывать TouchEvent, если я запускаю OnTouchEvent внутри пользовательского виджета?

Обновление я наткнулся на это http://groups.google.com/group/android-framework/browse_thread/thread/2cdd4269dfb2772e?pli=1 .

Это работает в моем случае, если пользовательский виджет не находится внутри прокрутки, такого как «Scrollview». Попытка решить «пчела внутри объекта прокрутки. Как не отправлять их на TouchEvents родителю? Возвращение правды не решает проблему

Это было полезно?

Решение

В обработке вашего виджета (например, во время Action_move), вызовите parent.requestdisallowintercepttouchevent (true). Анкет Этот метод в основном спрашивает родителя (в вашем случае Scrollview) и его предка не перехватывать событие Touch.

Другие советы

Вам нужно будет реализовать специальный подкласс ScrollView, который позволяет вашему виджету сказать ему отключить прокрутку при желании (поэтому он не начнет прокручивать достаточное количество движения и принимать события из вашего виджета). Пользовательский ScrollView может переопределить этот метод:

http://developer.android.com/reference/android/widget/scrollview.html#onIntercepttouchEvent(Android.view.motionEvent)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top