我有一个非常依赖WebViews的应用程序。在KitKat更新之后,用户报告说,该应用程序在缩小或退出后不再重新显示文本。我已经查看了文档并看到了很多变化,但是尽管它谈到了大量关于缩放和缩放的内容,但是没有提到任何关于文本再流的内容。看起来,一旦设置了视点,缩放就是一个泛缩放的东西,并且在缩放后不再有文本再流的选项。有什么解决办法吗?
发布于 2013-11-15 11:35:16
KitKat Chromium WebView不会再流文本。如果您担心文本的可读性,请参阅迁移指南中的“不再支持的SINGLE_COLUMN和迁移指南”部分,其中建议的解决方案是使用文本自动调整大小。
如果您真的想要恢复这种效果,那么您就需要这样做:
<div id="contentRoot"> </div>
中上面的重排应该有一个轻微的延迟(这是为了将不必要的重新布局的数量降到最低)。
发布于 2014-01-11 16:51:36
谢谢大家,为这伟大的线索!!我想把我的2杯加起来。不需要在HTML文件中添加id='contentRoot‘的额外div。您可以使用任何html中必须已经存在的body标记。而且,正如EladAvron所写,JS代码可以直接从Java调用。总之,marcin.kosiba发布的原始答案适用于您无权修改的HTML。
对我起作用的JS的电话是:
webview.loadUrl("javascript:document.getElementsByTagName('body')[0].style.width=window.innerWidth+'px';");
我不知道为什么,但增加'px‘对我来说至关重要。
发布于 2015-04-08 06:19:43
--这段代码将确保100%地解决您的问题--,KitKat的问题是以细头的形式出现的
<meta name="viewport" content="maximum-scale=0"> java> view.evaluateJavascript("document.getElementsByTagName('head')[0].appendChild('<meta name=\"viewport\" content=\"maximum-scale=0\">');", null);
webView.setWebViewClient(new WebViewClient() {
boolean scaleChangedRunnablePending = false;
@Override
public void onScaleChanged(final WebView view, float oldScale, float newScale) {
super.onScaleChanged(view, oldScale, newScale);
if (scaleChangedRunnablePending) return;
view.postDelayed(new Runnable() {
@Override
public void run() {
view.evaluateJavascript("document.getElementsByTagName('head')[0].appendChild('<meta name=\"viewport\" content=\"maximum-scale=0\">');", null);
scaleChangedRunnablePending = false;
}
}, 100);
}
https://stackoverflow.com/questions/19986305
复制相似问题