Я использую ViewPager
и WebView
для представления содержимого HTML
в качестве книги. На некоторых страницах ViewPager я разрешаю TouchEvent
обрабатывать WebView и на некоторых страницах я позволяю ViewPager обрабатывать TouchEvent
самостоятельно, переопределяя метод onInterceptTouchEvent
в ViewPager
(некоторые страницы имеют TextViews
и Buttons
без WebView
1-й и последней страницы здесь). Вот код для того же самого
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (getCurrentItem() == 0 || getCurrentItem() == getAdapter().getCount() - 1)
return false;
else {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
return false;
}
return true;
}
}
Я снова не разрешаю прокрутку, установив OnTouchListener
на WebView
, используя следующий код
contentView.setOnTouchListener((v, event) -> {
if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_MOVE) {
((BigBeeViewPager) v.getParent().getParent()).onInterceptTouchEvent(event);
}
return true;
});
Проблема, с которой я столкнулась, -. Когда я пытаюсь прокрутить ViewPager с середины страниц, она не работает. Я должен начать прокручивать с конца страниц. Однако он отлично работает для страниц, у которых нет WebView
Как разрешить ему начать прокрутку из любого места на страницах.
Такое поведение похоже на приложение для Android Gmail, где ViewPager
содержит WebView и Swiping доступен из любого места. Я не могу понять, как они это сделали.
Примечание.. Когда я перехватываю все TouchEvent
в WebView
, он также отключает выбор длинного клика и текста, что нежелательно.
Заранее благодарим за помощь.