0

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

我已阅读How to stop android webview from wrapping content while zooming? . 除了执行的双击之外,它可以工作。

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

问题来了。文本重新排列。当我缩放回原始比例时。文本仅占屏幕的一半。

无论发生什么,如何阻止 webView 重新排列其布局?

4

1 回答 1

11

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

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

默认情况下,WebSettings.LayoutAlgorithmNARROW_COLUMNS.

通过学习android.webkit.ZoomManager类,它必须 reflow (rearrange) ifNARROW_COLUMNS和 else case 是 reflow 如有必要。我不知道“必要”是什么,但至少在我的情况下它不会再回流了。

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

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

于 2013-01-17T07:37:42.163 回答