在安卓系统中禁用WebView触摸事件

32

如何在Android WebView中禁用所有触摸事件(或特定的滚动事件)? 我希望活动处理所有触摸事件。

2个回答

74
mWebView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return true;
    }
});
禁用 WebView 上的所有触摸事件,因为触摸监听器在 WebView 的默认触摸行为之前执行。通过返回 true,事件被消耗并且不会传播到 WebView。使用 android:clickable="false" 无法禁用触摸事件。

那么,如何恢复这些事件?想象一下,当我需要时,我必须暂时禁用它们,然后重新启用它们。 - Hosane
3
实际上,对于一个WebView来说,设置android:clickablelongClickable两个属性都应该可以解决问题。 - Romuald Brunet
Hosane,只需要将OnTouchListener的返回值改为false即可,这样就可以解决问题了。 - Snow Fox

1

如果我理解正确,您只需要覆盖onTouchEvent方法。


很可能那会起作用。我在想是否有比那更直接的属性或东西。 - hpique
啊,我明白了,那么你可以尝试给你的WebView添加这个布局参数android:clickable="false"。虽然我不确定它是否有效,但理论上应该可以,因为WebView是从View继承而来的。 - Octavian Helm
@hpique,您能再次发布解决方案吗?帖子中的当前解决方案无法正常工作。 - OAH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接