如何在 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;
}
}
我正在寻找禁用 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;
}
}