代码之家  ›  专栏  ›  技术社区  ›  ZekeMarsh

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

  •  0
  • ZekeMarsh  · 技术社区  · 7 年前

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

    应用程序位于Xamarin C#,使用WebView。

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

    任何帮助都将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Dennis Reep    7 年前

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

    将touchEvent添加到webview。通过将e.Handled设置为true,可以禁用与webview的任何形式的交互。

    我通过“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;
        }
    }