Различают сенсорные события между customView и представлением прокрутки
У меня есть один customView и customView, добавленные в виде прокрутки. Теперь я хочу разграничить оба сенсорных события. Моя проблема заключается в том, что при попытке прокрутки, customView также получает сенсорное событие, а когда я пытаюсь изменить в customView, прокрутка просмотра, получая события.
- Как мы можем остановить сенсорное событие customView при прокрутке.
- Как мы можем остановить сенсорные события прокрутки, когда 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) {// Выполнение операций в состоянии без прокрутки}