c# - 如何在 Android WebView 中禁用一键缩放?
问题描述
我正在寻找一种解决方案来禁用 Android WebView 的一键式缩放(也称为拖动缩放或双击拖动缩放)。如果您不熟悉手势:在 WebView 中双击屏幕,然后在第二次点击时,将手指放在屏幕上并向上向下拖动,从而使 WebView 缩放。
该应用程序在 Xamarin C# 中,使用 WebView。
以下代码仅禁用其他类型的缩放(双击、捏合和缩放):
Settings.SetSupportZoom(false);
Settings.BuiltInZoomControls = false;
任何帮助将非常感激。
解决方案
此功能不会自动为 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;
}
}
推荐阅读
- javascript - 对服务器的 HTTP 请求不更新标签
- testing - 如何在 Flutter 中测试渲染对象的内在大小
- sqlite - SQLite SUM 问题,它没有正确求和?
- asp.net - 如何针对跨站点脚本清理查询字符串输入 - 反映 ASP .Net(Web 窗体)应用程序中的问题?
- git - 将 git repo 与自己的 fork 合并,但保留所有移动/重命名文件的两个版本
- java - Spring boot:在类路径文件夹(类)之外的自定义文件夹中添加静态网页(Angular)
- java - 我怎样才能被包容的Letters成?
- php - 如何在 PHP 或 Laravel 中获取完整的 URL 路径“http://127.0.0.1:8000/admin/2#document”
- hadoop - Hadoop 2.8 NodeManager 在 Windows 上关闭
- ios - 如何在 Swift 的 UIView/Utility 类中获取导航栏