首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >放大KitKat WebView后不再显示文本

放大KitKat WebView后不再显示文本
EN

Stack Overflow用户
提问于 2013-11-14 19:13:05
回答 6查看 5.4K关注 0票数 3

我有一个非常依赖WebViews的应用程序。在KitKat更新之后,用户报告说,该应用程序在缩小或退出后不再重新显示文本。我已经查看了文档并看到了很多变化,但是尽管它谈到了大量关于缩放和缩放的内容,但是没有提到任何关于文本再流的内容。看起来,一旦设置了视点,缩放就是一个泛缩放的东西,并且在缩放后不再有文本再流的选项。有什么解决办法吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-11-15 11:35:16

KitKat Chromium WebView不会再流文本。如果您担心文本的可读性,请参阅迁移指南中的“不再支持的SINGLE_COLUMN和迁移指南”部分,其中建议的解决方案是使用文本自动调整大小。

如果您真的想要恢复这种效果,那么您就需要这样做:

  1. 将所有内容放入<div id="contentRoot"> </div>
  2. 实现onScaleChanged 类MyWebViewClient扩展WebViewClient {布尔值scaleChangedRunnablePending = false;//此处的其他代码@Override (最终的webView WebView、fload oldScale、浮点数newScale) { if ( scaleChangedRunnablePending )返回;view.postDelayed(新的Runnable() { @Override (){WebViewClient null);scaleChangedRunnablePending= false;},100);} //不要忘记to webView.setWebViewClient(新的MyWebViewClient());
  3. 使用以下JavaScript 函数recalculateWidth() { $("#contentRoot").width(window.innerWidth);} 或者,您也可以尝试修改viewport标记。

上面的重排应该有一个轻微的延迟(这是为了将不必要的重新布局的数量降到最低)。

票数 10
EN

Stack Overflow用户

发布于 2014-01-11 16:51:36

谢谢大家,为这伟大的线索!!我想把我的2杯加起来。不需要在HTML文件中添加id='contentRoot‘的额外div。您可以使用任何html中必须已经存在的body标记。而且,正如EladAvron所写,JS代码可以直接从Java调用。总之,marcin.kosiba发布的原始答案适用于您无权修改的HTML。

对我起作用的JS的电话是:

代码语言:javascript
运行
复制
webview.loadUrl("javascript:document.getElementsByTagName('body')[0].style.width=window.innerWidth+'px';");

我不知道为什么,但增加'px‘对我来说至关重要。

票数 5
EN

Stack Overflow用户

发布于 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);

代码语言:javascript
运行
复制
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);
            }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19986305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档