Android ListView - заморозить вертикальное положение при горизонтальном движении - PullRequest
0 голосов
/ 27 мая 2018

У меня странная проблема.У меня есть приложение регулировки громкости.В моем ListView у меня есть несколько пользовательских элементов, которые я могу использовать для изменения громкости конкретного приложения.В этом пользовательском элементе у меня есть прослушиватель MotionEvents, который в основном отслеживает координаты motionEvent.getX () для расчета изменений громкости.

Например, это мое мнение прямо сейчас: AppListView
Просто вы можете прикоснуться к элементу и двигать пальцем горизонтально, цветная линия и цифры будут меняться на лету.

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

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

Как я могу обнаружить горизонтальное движение и отключить прокрутку до действия MotionEvent.ACTION_UP?

Или

Можете ли вы предложить мне другое решение без ListView?

(ListView находится в SwipeDownRefreshLayout.)

Спасибо!

1 Ответ

0 голосов
/ 27 мая 2018

Хорошо, я нашел решение.В моем пользовательском адаптере у меня есть onTouchListener, в onTouch я только что добавил эту строку: view.getParent().requestDisallowInterceptTouchEvent(true); true, когда ACTION_DOWN и false, когда ACTION_UP

...