首先,我希望WebView可以滚动,但它需要像图片一样表现,滚动不会导致WebView重新排列其布局以适应屏幕。当页面真的比屏幕大时,它应该只提供滚动条。
我看过How to stop android webview from wrapping content while zooming?。它的工作原理除了双击之外。
要重新生成问题,
1.我将一个充满文本的网页加载到全屏WebView
2.双击屏幕右侧。 < - 这里只是放大,没问题
3.双击屏幕左侧。
问题来了。文本重新排列。当我缩放到原始比例。文字只填写了屏幕的一半。
如果发生什么事情,如何阻止webView重新排列其布局?
答案 0 :(得分:9)
我终于通过这条线解决了这个问题。
webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
默认情况下,WebSettings.LayoutAlgorithm
为NARROW_COLUMNS
。
通过研究android.webkit.ZoomManager
类,如果NARROW_COLUMNS
必须重排(重新排列),否则必须重新进行重排。我不知道“必要”是什么,但至少在我的情况下它不会再回流。
有一些偏离主题但我的目标是阻止内容重排。我发现在Android 2.x设备上,有时候,如果我点击zoomControl按钮即使设置webView.getSettings().setUseWideViewPort(true);
,网页内容也会重排。在Android 4上,这个问题不存在。
如果我没弄错的话。我认为这是网页元标记导致这一点。因此,我确保网页没有这一行:<meta name="viewport" content="width=device-width">
。我真的可以看到不同的是,如果没有这一行,网页内容就不会重排。