放大/缩小Android上的web视图没有设定限制(Zooming in/out on Androi

2019-09-16 22:58发布

在我当前的项目,我需要我的用户将能够通过滚动和缩放在大SVG图像。 我虽然遇到的主要问题,是Android的WebView类穿上放大和缩小的限制。 有没有什么办法可以删除或更改这些限制,以我自己的喜好? 标准的缩放控制似乎并不支持这些释放boundries。

如果我的问题不清楚,或者如果我需要阐述一下我的问题不要犹豫,问。

映入眼帘,Wottah

Answer 1:

因为似乎没有人想出比使用反射不同的解决方案 - 我不知道在这一点上任何的替代品 - 我写了一个简单的代码片段,展示了如何绕过的放大作用的上限。

请注意,下面的代码只能在ICS工作,并可能蜂巢,但我目前还没有平板电脑躺在附近,如果内部工作依赖于相同的检查ZoomManager类。 姜饼,升级Froyo和Eclair的似乎都直接在实现变焦功能中或多或少WebView类。 随着下面的例子应该是相当容易的添加一些代码也把这些操作系统的考虑。

// just set an Activity's content view to a single WebView for this test
WebView mWebview = new WebView(this);
setContentView(mWebview);

// retrieve the ZoomManager from the WebView
Class<?> webViewClass = mWebview.getClass();
Field mZoomManagerField = webViewClass.getDeclaredField("mZoomManager");
mZoomManagerField.setAccessible(true);
Object mZoomManagerInstance = mZoomManagerField.get(mWebview);

// modify the "default max zoom scale" value, which controls the upper limit
// and set it to something very large; e.g. Float.MAX_VALUE
Class<?> zoomManagerClass = Class.forName("android.webkit.ZoomManager");
Field mDefaultMaxZoomScaleField = zoomManagerClass.getDeclaredField("mDefaultMaxZoomScale");
mDefaultMaxZoomScaleField.setAccessible(true);
mDefaultMaxZoomScaleField.set(mZoomManagerInstance, Float.MAX_VALUE);


文章来源: Zooming in/out on Android Webview without a set limit