我正在使用 ViewPager
和 WebView
技术来展示 HTML
内容,制作成电子书。在 ViewPager 的某些页面中,我允许 TouchEvent
由 WebView 处理,而在另一些页面中,我通过覆盖 ViewPager 中的 onInterceptTouchEvent
方法,让 ViewPager 自己处理 TouchEvent
(这里的某些页面只包含 TextViews
和 Buttons
,没有 WebView
,例如第一页和最后一页)。以下是相关代码 -
@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;
}
}
我再次通过在WebView
上设置以下代码来禁止滚动:OnTouchListener
contentView.setOnTouchListener((v, event) -> {
if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_MOVE) {
((BigBeeViewPager) v.getParent().getParent()).onInterceptTouchEvent(event);
}
return true;
});
我遇到的问题是 - 当我试图从页面中间滑动ViewPager时,它不起作用。我必须从页面末尾开始滑动。但对于没有WebView
的页面,它可以正常工作。如何允许从任何位置开始滑动。
这种行为类似于Gmail Android应用程序,其中ViewPager
包含WebView
并且可以从任何位置进行滑动。我无法弄清楚他们是如何做到的。
注意 - 当我拦截所有TouchEvent
到WebView
时,它会禁用长按和文本选择,这是不可取的。
提前感谢帮助。
WebView
内显示的内容能否被缩放和滚动?或者滚动行为是否应该仅适用于ViewPager
? - j2ko