【发布时间】:2011-09-05 06:50:19
【问题描述】:
我有一个用于 webview 的 on touch 监听器,但它对 webview 的功能有不良影响,所以我想知道在初始交互后是否有移除 on touch 监听器?
【问题讨论】:
标签: android webview touch listener
我有一个用于 webview 的 on touch 监听器,但它对 webview 的功能有不良影响,所以我想知道在初始交互后是否有移除 on touch 监听器?
【问题讨论】:
标签: android webview touch listener
webView.setOnTouchListener(null);
【讨论】:
因此,在您的活动中,您将设置覆盖的 onTouchListener:
mWebView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.setOnTouchListener(mWebView.mOnTouchListener);
return false;
}
});
您必须创建一个新类,扩展 WebView。您可以在其中定义一个 OnTouchListener。
public final OnTouchListener mOnTouchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent rawEvent) {
return false;
}
};
将 ontouchlistener 设置为 null 不会将其重置为默认定义。您仍然需要提供一个实际的侦听器。
【讨论】:
mWebView 交互吗? mWebView 是如何到达 mOnTouchListener 的?谢谢!
View,例如WebView,则不需要实现触摸侦听器。 View 有一个您可以实现的内置方法:boolean onTouchEvent (MotionEvent event) { ... }。创建触摸侦听器的优点是您可以在某个其他类 中执行此操作,例如您已经定义的片段或活动。所以你不必创建另一个新类。
WebView,在您的 onTouchEvent 中,您将通过调用 @ 将事件传递给原始类987654329@ 每当您不自己处理事件时。 “删除”有问题的触摸内容仅仅意味着您设置了一些您测试的标志来决定是否使用您的自定义代码。类似boolean onTouchEvent(MotionEvent event) { if (doMyCustomCode) { .. code here ..; return true; } else return base.onTouchEvent(event); }
boolean onTouchEvent(MotionEvent event) { boolean handled = false; if (doMycustomCode) { .. code here that sets handled=true after doing whatever, if it is an event that you respond to .. } if (handled) return true; else return base.onTouchEvent(event); }
我在网上寻求帮助并找到了这篇文章。 当我这样做时
myView.setOnTouchListener(null);
我的myView 停止回复onTouch。
【讨论】: