我有一个webview,我正在设置onTouchListener,以便捕获实际视图上的滑动事件。
我还在WebView上设置了WebViewClient,以便在单击webview中的某些链接时覆盖Url Loading。
问题是OnTouch处理程序总是首先接收操作,即使我返回false(当不是滑动时)它也不会将触摸事件传递给内部html内容,因此实际上从未实际点击该链接。如果我删除onTouchListener它工作正常。是否有可能以某种方式将触摸事件传递给内容?
答案 0 :(得分:4)
您需要在主活动的OnCreate()内部设置一个带有requestFocus()的OnTouchListener():
mWebView = (MyWebView) findViewById(R.id.webview);
mWebView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
if (!v.hasFocus()) {
v.requestFocus();
}
break;
}
return false;
}
});
答案 1 :(得分:1)
不要使用OnTouchListener,而是在WebView中覆盖OnTouchEvent:
@Override
public boolean onTouchEvent(MotionEvent event) {
// do your stuff here... the below call will make sure the touch also goes to the webview.
return super.onTouchEvent(event);
}