我有ListView
,其中每个项目都包含WebView
。这些Web视图中的每一个实际上都在显示从外部源加载的视频播放器。每个WebView的内容都有一个固定的高度,并且完整显示,我可以通过设置避免任何滚动内滚动问题:
_webView.setVerticalScrollBarEnabled(false);
_webView.setHorizontalScrollBarEnabled(false);
我的问题是,当您滑动列表视图以滚动项目(工作正常)时,WebView内的播放器会将其解释为单击并开始播放视频。我想从WebView的角度来看,鼠标在x点下降,然后出现在同一点上,所以看起来像是一个点击。
有没有什么方法可以在顶部覆盖某种透明视图或做一些其他技巧,这样只有单击手势才能进入WebView,任何滑动/移动手势都被视为正常。
答案 0 :(得分:0)
我自己设法解决了这个问题。诀窍是继承WebView
,然后覆盖onTouchEvent
方法,如下所示:
@Override
public boolean onTouchEvent(MotionEvent event)
{
// If this web view gets sent a 'CANCEL' event, it means the parent list view has intercepted the event (for scrolling), so we want to catch it, otherwise it propogates into the HTML and starts the video
int action = MotionEventCompat.getActionMasked(event);
if(action == MotionEvent.ACTION_CANCEL)
{
return true;
}
return super.onTouchEvent(event);
}
我最终得出的结论是,当正确滑动时,封闭的ListView已经拦截了触摸事件,并将ACTION_CANCEL
事件发送到WebView。通过在ACTION_CANCEL
方法中捕获onTouchEvent
事件,可以防止事件进入WebView中的HTML。