如何在 Android WebView 中禁用一键缩放?

How to disable one-touch-zoom in Android WebView?

我正在寻找禁用 Android WebView 的一键式缩放(也称为拖动缩放或双击拖动缩放)的解决方案。如果您不熟悉该手势:在 WebView 中双击屏幕,第二次点击时,将手指放在屏幕上并上下拖动,使 WebView 缩放。

应用程序在 Xamarin C# 中,使用 WebView。

以下代码仅禁用其他类型的缩放(双击、捏合和缩放):

Settings.SetSupportZoom(false);
Settings.BuiltInZoomControls = false;

如有任何帮助,我们将不胜感激。

此功能不会自动为网络视图启用。我认为问题本身出在网站上。不过我确实有解决办法。

向网络视图添加一个触摸事件。您可以通过将 e.Handled 设置为 true 来禁用与 webview 的任何形式的交互。

我通过 "handled" 变量跟踪 e.Handled。当您双击时它会设置为真,当您松开手指时它会恢复为假。这会导致 webview 在双击后不执行任何操作,直到您将手指从屏幕上移开。

var handled = false;

GestureDetector _gestureDetector = new GestureDetector(this, new GestureListener());

_gestureDetector.DoubleTap += (object sender, GestureDetector.DoubleTapEventArgs e) => {
    handled = true;
};

webView.Touch += (object sender, View.TouchEventArgs e) => {
    _gestureDetector.OnTouchEvent(e.Event);
    if (e.Event.Action == MotionEventActions.Up)
    {
        handled = false;
    }
    e.Handled = handled;
};

您需要添加此 class 以启用 OnDoubleTap 功能。

private class GestureListener : GestureDetector.SimpleOnGestureListener
{
    public override bool OnDoubleTap(MotionEvent e)
    {
        return true;
    }
}