双击时如何停止android webview内容重排?

时间:2013-01-16 11:50:34

标签: android zoom android-webview zooming reflow

首先,我希望WebView可以滚动,但它需要像图片一样表现,滚动不会导致WebView重新排列其布局以适应屏幕。当页面真的比屏幕大时,它应该只提供滚动条。

我看过How to stop android webview from wrapping content while zooming?。它的工作原理除了双击之外。

要重新生成问题,
1.我将一个充满文本的网页加载到全屏WebView 2.双击屏幕右侧。 < - 这里只是放大,没问题
3.双击屏幕左侧。

问题来了。文本重新排列。当我缩放到原始比例。文字只填写了屏幕的一半。

如果发生什么事情,如何阻止webView重新排列其布局?

1 个答案:

答案 0 :(得分:9)

我终于通过这条线解决了这个问题。

webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);

默认情况下,WebSettings.LayoutAlgorithmNARROW_COLUMNS

通过研究android.webkit.ZoomManager类,如果NARROW_COLUMNS必须重排(重新排列),否则必须重新进行重排。我不知道“必要”是什么,但至少在我的情况下它不会再回流。

有一些偏离主题但我的目标是阻止内容重排。我发现在Android 2.x设备上,有时候,如果我点击zoomControl按钮即使设置webView.getSettings().setUseWideViewPort(true);,网页内容也会重排。在Android 4上,这个问题不存在。

如果我没弄错的话。我认为这是网页元标记导致这一点。因此,我确保网页没有这一行:<meta name="viewport" content="width=device-width">。我真的可以看到不同的是,如果没有这一行,网页内容就不会重排。