Различают сенсорные события между customView и представлением прокрутки

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

  1. Как мы можем остановить сенсорное событие customView при прокрутке.
  2. Как мы можем остановить сенсорные события прокрутки, когда customView хочет события.

заранее спасибо

2 ответа

Решение

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

т.е.

v.setOnTouchListener(new OnTouchListener() {
    // Setting on Touch Listener for handling the touch inside ScrollView
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    // Disallow the touch request for parent scroll on touch of child view
    v.getParent().requestDisallowInterceptTouchEvent(true);
    return false;
    }
});

Что касается второго вопроса, я не знаю точно, что вы делаете с customview, но, возможно, вы хотите использовать вместо этого события щелчка, потому что довольно неудобно использовать другую логику в ontouch а также onclick как это всегда будет срабатывать неожиданно.

boolean isScrolling = false;

myScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() { @Override public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) 
 isScrolling = scrollX != oldScrollX;

// для вертикальной прокрутки

});

// затем onTouchListener

if (! isScrolling) {// Выполнение операций в состоянии без прокрутки}

Другие вопросы по тегам