首页 > 解决方案 > 如何在 Android WebView 中禁用一键缩放?

问题描述

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

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

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

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

任何帮助将非常感激。

标签: c#androidxamarinwebviewzooming

解决方案


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

向 web 视图添加一个 touchEvent。您可以通过将 e.Handled 设置为 true 来禁用与 web 视图的任何形式的交互。

我正在通过“handled”变量跟踪 e.Handled。当你双击它时它被设置为 true,当你松开屏幕的手指时它被设置为 false。这会导致 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;
};

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

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

推荐阅读