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

时间:2018-09-10 15:11:00

标签: c# android xamarin webview zoom

我正在寻找一种解决方案,以禁用Android WebView的一键式缩放(也称为“拖动到缩放”或“双击拖动”来缩放)。如果您不熟悉该手势,请在WebView中双击屏幕,然后再次单击,将手指保持在屏幕上并将其上下拖动以使WebView缩放。

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

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

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

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

将touchEvent添加到Web视图。通过将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;
    }
}